我的腳本完全保存在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>
等效。字符編碼不匹配
當使用PDO存儲源代碼中源自HTTP輸入或字符串文字的€字符時,根據MySQL Workbench 5.2,我剩下c3 a2 e2 80 9a c2 ac
。從數據庫中檢索並在頁面上顯示它可以正常工作。然而在phpMyAdmin和Workbench中,我看到€
。
當使用這兩個工具來存儲€時,我剩下e2 82 ac
,這顯然是正確的UTF-8表示,但是如果我嘗試檢索並使用PHP輸出,則會顯示 。
我的問題是,這種差異是從哪裏出現的,是否可以讓我的網頁和數據庫工具完美地工作?
奇怪,聽起來你正在做的一切正確。你是否確定你的數據庫連接是UTF-8?你能發送一個'SET NAMES utf8;'查詢來確認嗎? – 2010-07-01 23:38:15
並且你的瀏覽器忽略了編碼? charset是建議性的,如果你已經配置它,瀏覽器將會忽略它。在不同的瀏覽器中行爲是否相同?在不同的機器上? – Andrew 2010-07-01 23:48:20
爲了更好的衡量,請確保您的PHP腳本已配置爲使用UTF-8。如果PHP正在進行即時字符轉換,因爲它認爲文件需要使用另一個ISO字符表,這可能會解釋您所看到的內容。 'ini_set('default_charset','UTF-8');' – Andrew 2010-07-01 23:54:31