Rumah >pangkalan data >tutorial mysql >Mengapa Watak Parsi Saya Dipaparkan dengan Tidak Betul dalam Laman Web Codeigniter Saya, Walaupun Menggunakan Pengekodan UTF-8?
Seorang pembangun menghadapi isu pelik semasa menulis semula tapak web lama dalam bahasa Parsi, yang menggunakan aksara Perso/Arab. Masalahnya melibatkan percanggahan dalam pengekodan aksara semasa menyimpan dan mengambil data daripada pangkalan data.
Skrip sebelumnya menggunakan enjin pangkalan data yang dipanggil TUBADBENGINE untuk mengurus data yang disimpan dengan pengekodan aksara "utf8_persian_ci." Skrip baharu, yang dikodkan dengan Codeigniter, juga mempunyai "utf8" dan "utf8_persian_ci" sebagai set aksara dan tetapan penyusunannya.
Walau bagaimanapun, setelah memasukkan aksara Parsi ke dalam pangkalan data dengan skrip lama, ia dipaparkan secara berbeza dalam skrip baharu. Skrip lama dengan betul memaparkan aksara seperti yang dimaksudkan, tetapi yang baharu mempamerkan gambaran yang pelik.
Menggali lebih dalam, didapati bahawa data yang disimpan dalam pangkalan data adalah dalam format yang kelihatan salah. Memasukkan aksara Parsi "aaaaa" menyebabkan "عمراÙ" disimpan.
Apabila mengambil data ini dalam skrip baharu, ia dipaparkan sebagai "عمراÙ." Walau bagaimanapun, skrip lama masih memaparkannya dengan betul sebagai "aaaaa."
Punca isu ditemui selepas analisis lanjut: sambungan pangkalan data yang digunakan dalam skrip lama telah tersilap ditetapkan untuk menggunakan pengekodan aksara latin1, walaupun pangkalan data dan jadual dikonfigurasikan dengan utf8_persian_ci.
Ini mengakibatkan proses berikut:
Untuk menyelesaikan masalah ini, data dalam pangkalan data perlu ditukar kepada pengekodan aksara yang betul. Pertanyaan berikut telah digunakan untuk penukaran ini:
SELECT CONVERT(BINARY CONVERT(field_name USING latin1) USING utf8) FROM table_name
Selepas menukar data, skrip baharu boleh memaparkan aksara Parsi dengan betul.
Atas ialah kandungan terperinci Mengapa Watak Parsi Saya Dipaparkan dengan Tidak Betul dalam Laman Web Codeigniter Saya, Walaupun Menggunakan Pengekodan UTF-8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!