간단하게 유니 코드 문자를 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이 올바르게 작동하는지 의심하지 않습니다. 그렇다면 어디에서 문제를 찾을 수 있습니까?
이 http://stackoverflow.com/ 참조 참조 질문/4361459/php-pdo-charset-set-names – RobertMaysJr
인코딩을 별도로 정의해야한다는 것을 알지 못했습니다! 이것으로 해결했습니다. 정말 고맙습니다! – YMMD