Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Skrip CodeIgniter Baharu Saya Memaparkan Aksara Parsi yang rosak manakala Skrip Lama tidak?
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:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
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!