내 스크립트가 확실히 UTF-8로 저장됩니다. "{$this->engine}:host={$this->host};dbname={$this->name};charset=UTF-8"
으로 PDO를 인스턴스화합니다. 내 테이블은 InnoDB를 사용하며 utf8_general_ci를 사용하여 대조됩니다. 내 페이지는 Content-Type: text/html; charset=UTF-8
헤더 또는 <meta>
등가물로 전송됩니다.문자 인코딩 불일치
소스 코드에 HTTP 입력 또는 문자열 리터럴 중 하나에서 발생한 € 문자를 PDO를 사용하여 저장할 때 MySQL Workbench 5.2에 따라 c3 a2 e2 80 9a c2 ac
이 남았습니다. 이것을 데이터베이스에서 가져 와서 페이지에 표시하면 문제가 없습니다. 그러나 phpMyAdmin과 Workbench에서 나는 €
을 본다.
이러한 두 도구를 사용하여 €를 저장하는 경우, 나는 올바른 UTF-8 표현 인 e2 82 ac
으로 남았습니다. 그러나 PHP로 검색하여 출력하려고하면 가 표시됩니다.
제 질문은이 불일치가 어디에서 발생하며 내 웹 페이지와 데이터베이스 도구를 모두 완벽하게 작동시킬 수 있습니까?
이상하게 들리시 겠지만, 모든 일을 제대로하고있는 것 같습니다. DB 연결이 UTF-8인지 1000 % 확신합니까? 당신은'SET NAMES utf8;'쿼리를 보냄으로써 확실히 확인할 수 있습니까? –
그리고 브라우저가 인코딩을 무시하고 있습니까? charset은 권고 사항이며, 브라우저가이를 구성하면 무시됩니다. 다른 브라우저에서 동작이 동일합니까? 다른 기계에서? – Andrew
좋은 측정을 위해 PHP 스크립트가 UTF-8을 사용하도록 구성되었는지 확인하십시오. PHP가 파일이 다른 ISO 문자표를 사용해야한다고 생각하여 즉석 문자 변환을 수행하는 경우, 이는보고있는 내용을 설명 할 수 있습니다. 'ini_set ('default_charset', 'UTF-8');' – Andrew