2013-02-25 56 views
0

我希望對於爲什麼有些UTF-8文本被保存到數據庫表不正確的解釋...UTF-8頁爲UTF-8的數據庫表顯示不正確

我創建了一個HTML表單和該頁面的元內容設置爲UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

PHP和模板文件都是Unicode/UTF-8。

表單字段數據被提交給utf8_unicode_ci編碼數據庫表。

如果我提交帶有「éçä」(我從Windows創建的字符映射程序設置爲Unicode字符集)等字符的表單,它們將在數據庫中出現錯誤(「ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ」ÃÃÃÃÃÃÃ)。我正在通過phpMyAdmin查看數據庫(它也設置爲UTF-8字符編碼)。

但是,如果我上了弦的iconv運行()轉換爲ISO-8859-1正確地插入到數據庫中,然後將人物表演前:

$input = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $input); 

這是怎麼回事?不應該始終都是UTF-8/Unicode的事實導致它在數據庫中正確嗎?我在做什麼錯誤,爲什麼將數據轉換爲ISO-8859-1工作?

做數據的唯一的另一件事是FILTER_SANITIZE_MAGIC_QUOTES:

$input = filter_var($input,FILTER_SANITIZE_MAGIC_QUOTES); 

謝謝您的時間和投入。還沒有提到的

回答

1

兩個步驟:

+0

啊哈!它指定了PDO中的字符集。非常感謝,阿爾瓦羅。 – 2013-02-25 17:06:15