我有一個包含utf8_general_ci varchar字段的InnoDB表的MySQL數據庫。當我通過PHP(通過PEAR :: MDB2)獲取它們並嘗試輸出它們(通過Smarty)時,我得到了?符號。我想知道如何解決這個問題,這很可能是由PHP引起的。字符編碼問題:MySQL 5.0 + PHP 5.2
良好的信息知道:
- 據該網站的新版本,我的工作,老版本有,即使它並沒有使用Smarty的,也不MDB2同樣的問題,所以他們是最有可能不是原因。舊程序員使用htmlentities()來解決問題,但我試圖避免這種情況。
- 我所有文件(模板,源代碼等)的字符編碼都是UTF-8,沒有BOM。
- 當我顯示一個頁面時,所有重音字符(模板中的那些字符,而不是來自MySQL的)會正確顯示,並且瀏覽器中的編碼爲UTF-8。如果我手動將其切換到ISO-8859-1,那麼MySQL中的字符正確輸出,但沒有其他字符。
基本上,似乎PHP或MySQL在查詢/獲取過程中的某個點將數據庫中包含的UTF-8數據轉換爲ISO-8859-1,這就是我想要解決的問題。
我已經做了很多搜索,但沒有找到任何解決方案,我希望問題出在某個地方。我想避免使用htmlentities()或utf8_encode(),但這可能是PHP6出現之前唯一的方法。
謝謝你對此的意見!
這些是如何來看?直行 ?標記或?在黑色鑽石? – 2011-01-06 15:44:51