數據庫中的奇怪字符編碼:舊腳本解碼,新腳本失敗
問題陳述:
網站從舊腳本遷移到基於CodeIgniter 的新腳本時遇到了問題字元編碼問題。舊腳本可以顯示資料庫中儲存的波斯字符,而新腳本顯示損壞的文字。
分析:
資料庫表和列配置了排序規則utf8_persian_ci。新腳本還使用 UTF-8 作為其字元集和整理。該問題源於使用舊 TubaDBEngine 時字元最初儲存在資料庫中的方式。
舊腳本行為:
當波斯語字符插入到數據庫中時使用TubaDBEngine 的數據庫時,它們不是以UTF-8 存儲,而是以不同的編碼存儲,這導致顯示諸如資料庫中的“Ø1مران”。但是,舊腳本能夠正確解碼和顯示這些字元。
新腳本問題:
新腳本雖然已正確配置為 UTF-8,但無法使用 TubaDBEngine 的編碼對最初儲存在資料庫中的字元進行解碼。因此,新腳本在獲取資料時顯示損壞的文字。
解決方案:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)
資料轉換後,新腳本應該能夠正確取得並顯示波斯字。
以上是為什麼我的新 CodeIgniter 腳本顯示損壞的波斯語字符,而舊腳本則不顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!