首頁 >後端開發 >php教程 >為什麼我的新 CodeIgniter 腳本顯示損壞的波斯語字符,而舊腳本則不顯示?

為什麼我的新 CodeIgniter 腳本顯示損壞的波斯語字符,而舊腳本則不顯示?

Susan Sarandon
Susan Sarandon原創
2024-12-27 05:30:15182瀏覽

Why Does My New CodeIgniter Script Display Corrupted Persian Characters While the Old Script Doesn't?

數據庫中的奇怪字符編碼:舊腳本解碼,新腳本失敗

問題陳述:

網站從舊腳本遷移到基於CodeIgniter 的新腳本時遇到了問題字元編碼問題。舊腳本可以顯示資料庫中儲存的波斯字符,而新腳本顯示損壞的文字。

分析:

資料庫表和列配置了排序規則utf8_persian_ci。新腳本還使用 UTF-8 作為其字元集和整理。該問題源於使用舊 TubaDBEngine 時字元最初儲存在資料庫中的方式。

舊腳本行為:

當波斯語字符插入到數據庫中時使用TubaDBEngine 的數據庫時,它們不是以UTF-8 存儲,而是以不同的編碼存儲,這導致顯示諸如資料庫中的“Ø1مران”。但是,舊腳本能夠正確解碼和顯示這些字元。

新腳本問題:

新腳本雖然已正確配置為 UTF-8,但無法使用 TubaDBEngine 的編碼對最初儲存在資料庫中的字元進行解碼。因此,新腳本在獲取資料時顯示損壞的文字。

解決方案:

  1. 使用查詢如:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
  1. 更新資料庫中的資料使用 UPDATE語句:
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)

資料轉換後,新腳本應該能夠正確取得並顯示波斯字。

以上是為什麼我的新 CodeIgniter 腳本顯示損壞的波斯語字符,而舊腳本則不顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn