資料儲存和擷取中的奇怪字元編碼差異
在重寫使用波斯字元的舊網站時,您遇到過資料儲存和檢索方式之間存在奇怪的差異。舊腳本可以正確顯示波斯語字符,而新腳本則使用與資料庫相同的編碼來顯示它們,這看起來是扭曲的。
要理解這個問題,需要注意的是:
當您使用舊腳本輸入波斯語字元時,它們在資料庫中顯示為奇怪的序列,如 Ø1مران。但是,舊腳本可以正確檢索並顯示它們。這顯示 TUBADBENGINE 採用了單獨的編碼方案,可能基於 ISO-8859-1,新腳本無法辨識該方案。
相反,如果您直接將波斯字元插入資料庫,它們將被儲存如預期的那樣,並由新腳本正確檢索。然而,舊腳本現在將它們顯示為問號(???)。這是因為舊腳本的字元解碼機制需要與資料庫用於直接插入的編碼不同的編碼。
解決方案在於將資料庫中現有的資料從 TUBADBENGINE 使用的編碼轉換為 UTF CodeIgniter 期望的 -8 編碼。要實現此目的:
UPDATE tnewsgroups SET fName = CONVERT(INARY CONVERT(fName USING latin1) USING utf8);
資料轉換後,新舊腳本都應正確顯示波斯字。
以上是為什麼我的波斯語字符在新舊網站腳本之間顯示不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!