我在制作格斗人網 (www.helpqy.com) 的時候遇到了頁面報錯Incorrect string的問題,我使用的是mysql,數據表中有很多中文內容,最後發現在安裝mysql的時候需要選擇default collection,主要有兩種選擇,一是latin1,主要用於純洋文的網站中,二是UTF8,主要用在中文或者中英混合的網站中。我重新安裝了mysql,並且選擇default collation為UTF8,問題得以解決。
調試過程中又遇到另外一個問題,即頁面從數據庫中讀取的中文內容顯示為亂碼,最後發現在數據庫中,准確的說是數據庫中的某一個表中,同樣有collation選項,然後具體到每一個字段同樣有collation選項,開發者需要根據實際情況進行調整,便可以解決問題。
localhost:3306/數據庫名?characterEncoding=utf-8(跟頁面的編碼一樣)
如果還是不行就寫個過濾器,過濾一下就ok了。
有什麼不明白的可以直接問我。
參考資料:天高雲淡(◆ノSimply)
一般來說,亂碼問題其實也就是編碼不一致導致的。因此,要解決PHP中文亂碼問題,解決步驟有如下幾步:
1. 頁面聲明的編碼 與 數據庫內部編碼 一致
比如: 你的網頁裡設置 charset = gb2312,然而,你的數據庫使用utf-8,那麼,如果不進行iconv轉換的話,顯示出來可能就有問題。
2. 頁面文件的編碼 與 頁面聲明的編碼 一致
比如,你的網頁文件為 test.php,該文件用 UTF-8B 格式保存,而如果你的網頁裡設置 charset = gb2312,那麼可能顯示也不正常。
從你的問題描述來看,“PHP中非數據庫導出的部分 其中文顯示正常 ”,據此可以確定頁面文件編碼與頁面聲明編碼一致,那麼,問題原因就在於:
頁面聲明的編碼 與 數據庫內部編碼 不一致造成的。
你可以查看下,你的 數據庫編碼格式 與 網頁定義的編碼。