MySQL의 모든 데이터가 UTF8로 인코딩되기를 원합니다. 모든 문자 집합과 데이터 정렬을 데이터베이스, 테이블 및 열의 UTF8로 설정했습니다. 데이터베이스에 무엇인가 기록되기 전에 PHP에서 mb_detect_encoding을 사용하여 UTF8인지 확인합니다. 따라서 모든 데이터는 UTF8로 인코딩됩니다.MySQL UTF8 데이터가 제대로 표시되지 않음
그러나이 문제는 다음과 같습니다. Ríkarðsdóttir이 데이터베이스에서 쿼리 할 때 올바르게 표시되고 UTF8로 인코딩 된 웹 페이지에 PHP를 통해 표시됩니다. phpMyAdmin을 통해이 동일한 레코드를 쿼리하면 RÃkarà ¡ sdóttir을 얻습니다. MySQL 커맨드 라인을 사용하면 마찬가지입니다.
Running SHOW VARIABLES returns to me:
character_set_client utf8,
character_set_connection utf8,
character_set_database utf8,
character_set_filesystem binary,
character_set_results utf8,
character_set_server latin1,
character_set_system utf8
오직 서버가 latin1이고 공유 된 호스팅 사이트에 있으며 내가 변경할 수 있다고 생각하지 않습니다. 그것이 문제일까요?
내가 이해하지 못하는 부분은 다음과 같습니다. UTF8 웹 페이지에 Ríkarðsdóttir이 올바르게 표시되는 이유는 무엇입니까? UTF8로 인코딩 된 phpMyAdmin 웹 페이지는 RÃ © c? sd? tttir로 표시됩니까? 데이터가 실제로 UTF8로 인코딩되지 않았습니까? 또는 데이터베이스가 데이터를 믿을 수 있습니까? 이 문제를 해결하기 위해 수행해야 할 작업은 무엇입니까?
SET NAMES UTF8
데이터베이스가 UTF8로 데이터를 저장해야하고, 웹 페이지 헤더는 또한 UTF8 선언을해야하지만, 데이터베이스에 대한 연결도 필요 :
제안 해 주셔서 감사합니다. 그러나 문제를 해결하지는 못했습니다. mysql 셸을 통해 SET NAMES 'utf8'쿼리를 시도하고 phpMyAdmin에 추가했지만 두 경우 모두 데이터 표시에 영향을주지 않았습니다. mysql 문서 : http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html에서 SET NAMES 'x'문은 다음 세 문장과 같습니다. SET character_set_client = x ; SET character_set_results = x; SET character_set_connection = x SHOW VARIABLES 쿼리 당 모두 UTF8로 설정됩니다. 어쨌든 mysql은 다른 인코딩 인 UTF8 데이터를 저장하고있는 것 같다. 아마도 latin1 일 것이다. – jkharlan
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8을 실행하여 데이터가 UTF8로 저장되는지 확인할 수 있습니다. –