2009-05-07 9 views
2

내 문제가 있습니다. 나는 따옴표라는 mysql 테이블이 있습니다. 행 중 하나에서, 견적PHP MySQL 인코딩 버그?

‘ and ’ 

지금 행 정렬이 utf8__unicode__ci에게있는 folloqing 문자를 포함

의도 한대로 따옴표가 나올 행을 가져 오지 MySQL의 쿼리 브라우저와 phpMyAdmin에를 사용하여. 내가 PHP를 사용하여 데이터베이스에서 그들을 PIN이 화면에 표시 할 때 어떻게 이제까지는 상자로 나올

� and � 

내 HTML 페이지는 UTF-8 인코딩을 가지고 있으며, 모든 UTF-8 인코딩 옵션은 PHP에 설정되어 :

/* Set UTF-8 settings */ 
mb_internal_encoding('UTF-8'); 
mb_regex_encoding('UTF-8'); 
mb_http_output('UTF-8'); 

/* Set ICONV ini settings */ 
ini_set('iconv.input_encoding', 'UTF-8'); 
ini_set('iconv.output_encoding', 'UTF-8'); 
ini_set('iconv.internal_encoding', 'UTF-8'); 

/* Set ICONV function settings */ 
iconv_set_encoding('input_encoding', 'UTF-8'); 
iconv_set_encoding('output_encoding', 'UTF-8'); 
iconv_set_encoding('internal_encoding', 'UTF-8'); 

그것은 작동해야합니다. 그러나 그것은 doesnt한다 : 누군가는 이것에 약간 빛을 비춰 줄 수있다.

답변

5

MySQL 연결에서 선택한 문자 세트로 UTF-8을 설정해야 할 수도 있습니다. 올바른 방향으로 날을 설정하는 너무 많은

$mysqli = new mysqli("localhost", "my_user", "my_password", "test"); 
$mysqli->set_charset("utf8"); 
+0

쿼리가 SET NAMES 'utf8' – Petrunov

+0

입니다. 실제로 SET CHARACTER SET이라고 생각합니다. SET NAMES는 테이블/컬럼/etc 식별자와 관련이있다. – chaos

1

귀하의 데이터 정렬이 도움이되지 않습니다. 정렬 순서를 결정하는 것입니다. 당신은 같이 UTF-8로 설정 기본 문자가 필요 만 잡았다는 때로는 인덱스가 너무 긴 경우가 될 것입니다

ALTER TABLE `foo` DEFAULT CHARSET=utf8 

:

CREATE TABLE `foo` (
    `id` int not null auto_increment, 
    `name` varchar(50) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

당신과 함께이 문제를 해결 할 수 있어야한다 그들은 UTF-8에있어.

+0

@chaos :

이 제가 사용되는 솔루션이다. 그것은 여전히 ​​일을하지 않습니다. MySQL Query Browser와 PHPMyAdmin 모두 PHP와 관련이 있습니다. –

+0

Erm ... HTTP 문서 인코딩은 무엇입니까? 보기> Firefox에서 문자 인코딩. – chaos

+0

자신의 PHP를 통해 데이터베이스 컨텐츠를 표시 할 때, 그것은 PHPMyAdmin에서 utf-8입니다. – chaos

4

@Joakim, 감사 : 당신은 mysqli PHP 드라이버를 사용하는 경우이 같은 것을 의미한다. 사용자 정의 데이터베이스 드라이버를 사용하기 때문에 정확한 코드를 사용할 수 없으며 mysqli 클래스가 아닌 이전 mysql 명령을 사용하여 작동한다. 나는 mysql_set_charset()을 사용했지만 내 php 버전은 그것을 지원하지 않았다 (여전히 php 5 tho). 그냥 그 시도

mysql_query("SET CHARACTER SET utf8", $this->connection); 
mysql_query("SET NAMES utf8", $this->connection);