2012-08-31 2 views
0

간단하게 유니 코드 문자를 MySQL 데이터베이스에 삽입하는 간단한 스크립트를 작성했습니다.PhpMyAdmin이 내 문자 인코딩을 손상시키는 이유는 무엇입니까?

mysql_connect('localhost', 'root', '*') or die(mysql_error()); 
mysql_select_db('test') or die(mysql_error()); 
mysql_query("INSERT INTO thetable (thefield) VALUES ('äöüß')") or die(mysql_error()); 

메모장 + +를 사용하여 스크립트를 생성했으며 BOM이없는 UTF-8로 인코딩되었습니다.

데이터베이스와 테이블의 데이터 정렬은 utf8_general_ci입니다. PhpMyAdmin을 사용하여 데이터를 살펴보면 charset이 손상된 것 같습니다. 문자가 제대로 표시되지 않습니다

äöüß

을 내 스크립트에서 데이터를 다시받을 때 그 캐릭터 세트 괜찮을 것 같다. 나는 오른쪽 헤더 ( header('Content-Type: text/html; charset=utf-8'))로 버렸고 모든 것이 올바르게 보였다.

다시 PhpMyAdmin을 사용하여 테이블에 데이터를 삽입하면 PhpMyAdmin에 올바르게 표시되지만 데모 스크립트에서 덤프하면 바로 문자 세트가 손상됩니다.

이유가 무엇인지 알 수 없습니다. 데이터베이스의 charset, HTTP 헤더 및 스크립트의 인코딩이 일관되고 PhpMyAdmin이 올바르게 작동하는지 의심하지 않습니다. 그렇다면 어디에서 문제를 찾을 수 있습니까?

답변

0

원본의 문자 수는 2 자로되어 있으므로 유니 코드 대신 표준 ASCII로 읽습니다. MySQL 연결이 연결할 때 사용하는 문자 집합을 지정해야 할 수도 있습니다.

나는 내 휴대폰에있어,하지만 u는 당신의 DB를 게시하면 내가 컴퓨터에 도착하면

편집 방법 나는 당신을 보여줄 수있는 코드에 연결 - PHP PDO: charset, set names?

+0

이 http://stackoverflow.com/ 참조 참조 질문/4361459/php-pdo-charset-set-names – RobertMaysJr

+0

인코딩을 별도로 정의해야한다는 것을 알지 못했습니다! 이것으로 해결했습니다. 정말 고맙습니다! – YMMD

관련 문제