Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Skrip CodeIgniter Baharu Saya Memaparkan Aksara Parsi yang rosak manakala Skrip Lama tidak?

Mengapa Skrip CodeIgniter Baharu Saya Memaparkan Aksara Parsi yang rosak manakala Skrip Lama tidak?

Susan Sarandon
Susan Sarandonasal
2024-12-27 05:30:15182semak imbas

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

Pengekodan Aksara Pelik dalam Pangkalan Data: Penyahkodan Skrip Lama, Skrip Baharu Gagal

Pernyataan Masalah:

Penghijrahan tapak web daripada skrip lama kepada skrip baharu berasaskan CodeIgniter menghadapi masalah dengan watak pengekodan. Skrip lama boleh memaparkan aksara Parsi yang disimpan dalam pangkalan data, manakala skrip baharu menunjukkan teks yang rosak.

Analisis:

Jadual dan lajur pangkalan data dikonfigurasikan dengan susunan daripada utf8_persian_ci. Skrip baharu juga menggunakan UTF-8 sebagai set dan penyusunannya. Isu ini berpunca daripada cara aksara pada asalnya disimpan dalam pangkalan data apabila menggunakan TubaDBEngine lama.

Gelagat Skrip Lama:

Apabila aksara Parsi dimasukkan ke dalam pangkalan data menggunakan TubaDBEngine, ia tidak disimpan dalam UTF-8 tetapi dalam pengekodan yang berbeza, yang mengakibatkan paparan aksara seperti "عمران" dalam pangkalan data. Walau bagaimanapun, skrip lama dapat menyahkod dan memaparkan aksara ini dengan betul.

Isu Skrip Baharu:

Skrip baharu, semasa dikonfigurasikan dengan betul untuk UTF-8, tidak boleh menyahkod aksara yang pada asalnya disimpan dalam pangkalan data menggunakan pengekodan TubaDBEngine. Akibatnya, skrip baharu menunjukkan teks yang rosak semasa mengambil data.

Penyelesaian:

  1. Tukar data yang disimpan dalam pangkalan data kepada UTF-8 menggunakan pertanyaan seperti:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
  1. Kemas kini data dalam pangkalan data menggunakan KEMASKINI pernyataan:
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)

Selepas penukaran data, skrip baharu sepatutnya dapat mengambil dan memaparkan aksara Parsi dengan betul.

Atas ialah kandungan terperinci Mengapa Skrip CodeIgniter Baharu Saya Memaparkan Aksara Parsi yang rosak manakala Skrip Lama tidak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn