2012-03-28 2 views
0

MySQL 테이블 & 필드가 모두 UTF-8로 설정되어 있습니다. 문제는 데이터베이스 작성을 담당했던 이전 PHP 스크립트가 스크립트 자체, MySQL 연결 또는 다른 곳에 있는지 여부를 알지 못하는 다른 인코딩을 사용하고 있다는 것입니다. 결과적으로 테이블 & 필드가 UTF-8로 설정되었지만 중국어 대신 잘못된 문자가 표시됩니다.PHP MySQL 중국어 UTF-8 문제

enter image description here

이 가

지금, (데이터 쓰기를 담당했고, 손상) 이전 스크립트가 어떤 이유로 잘 읽을 수 있지만 내 새 스크립트는 모두 UTF로 인코딩되는 : 그것은 그렇게 보인다 -8, ½ ©와 같은 문자를 보여줍니다. 어떻게 고칠 수 있습니까?

+1

흠, [mb_detect_encoding] (http://php.net/manual/en/function.mb-detect-encoding.php) 함수를 사용하여 데이터를 읽으려고 했습니까? 시도 해보십시오. 원본 인코딩이 무엇인지 확인할 수 있습니다. – Wh1T3h4Ck5

+1

흠. 그것으로 조금 놀았지만, 지금은 해결 된 것 같아. 그냥'SET NAMES latin1'으로 mysql 쿼리를 추가했는데 괜찮아 보인다. – Broshi

답변

0

소리가 나면 utf8 열이 있지만 테이블에 쓰고 latin1 연결을 사용하여 읽으면 실제로 테이블에 저장된 내용이 잘못 인코딩됩니다. 문제는 utf8 연결을 사용하여 테이블에서 읽을 때 실제로 거기에 저장된 데이터를 볼 수 있기 때문에 잘못 된 것입니다. 테이블에서 잘못 인코딩 된 데이터는 latin1로 변환 한 다음 바이너리 문자 세트 (총 세 단계)를 통해 utf8로 다시 변환하여 수정할 수 있습니다.

0

원래 데이터베이스는 GB-18030 또는 그와 비슷한 문자 인 이 아니며 Latin-1 -이 문자를 구성하는 바이트는 UTF-8로 표시 될 때 라틴어 발음 구별 기호로 표시됩니다 . 각 문자열을 GB-18030으로 읽고 UTF-8로 변환 한 후 저장하십시오.