開發人員在用波斯語重寫舊網站時遇到了一個特殊問題,該問題使用波斯/阿拉伯字符。該問題涉及從資料庫儲存和獲取資料時字元編碼的差異。
先前的腳本使用名為 TUBADBENGINE 的資料庫引擎來管理儲存的資料字元編碼「utf8_persian_ci」。使用 Codeigniter 編碼的新腳本也將「utf8」和「utf8_persian_ci」作為其字元集和排序規則設定。
但是,在使用以下命令將波斯語字元輸入資料庫後舊腳本中,它們在新腳本中的顯示有所不同。舊腳本按照預期正確顯示了字符,但新腳本表現出了奇怪的表現。
深入挖掘,發現資料庫中儲存的資料格式似乎有誤。插入波斯語字元「aaaaaa」會導致儲存「Ø1مراÙ」。
在新腳本中取得此資料時,它顯示為「Ø1مراÙ」。然而,舊腳本仍然正確顯示為“aaaaaa”。
進一步分析後發現問題根源:舊腳本中使用的資料庫連接錯誤設定為使用 latin1 字元編碼,儘管資料庫和表格配置為 utf8_persian_ci。
這導致了以下結果流程:
要解決這個問題,資料庫中的資料必須轉換為正確的字元編碼。此轉換使用以下查詢:
SELECT CONVERT(BINARY CONVERT(field_name USING latin1) USING utf8) FROM table_name
轉換資料後,新腳本可以正確顯示波斯語字元。
以上是儘管使用 UTF-8 編碼,為什麼我的波斯語字符在我的新 Codeigniter 網站中顯示不正確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!