Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Aksara Parsi Saya Bercelaru Apabila Memindahkan Data daripada Skrip Lama ke MySQL?

Mengapa Aksara Parsi Saya Bercelaru Apabila Memindahkan Data daripada Skrip Lama ke MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-09 11:04:16527semak imbas

Why Are My Persian Characters Garbled When Migrating Data from an Old Script to MySQL?

Misteri Data Tersalah Kod dalam MySQL: Kes Skrip Lama dan Baharu

Dalam bidang penyimpanan dan pengambilan data, bukan perkara biasa untuk menghadapi tingkah laku yang tidak dijangka semasa bekerja dengan sistem yang berbeza. Begitulah keadaannya dengan percanggahan pengekodan yang membingungkan yang dihadapi oleh pembangun yang cuba memindahkan data daripada skrip lama kepada skrip baharu.

Masalahnya: Watak Bercelaru

Pemaju menghadapi isu pelik: aksara Parsi yang dikodkan menggunakan UTF-8 dalam skrip lama muncul sebagai teks bercelaru apabila menggunakan skrip baharu, malah walaupun kedua-dua skrip kononnya menggunakan set aksara yang sama (UTF-8).

Suspek: Konfigurasi Pangkalan Data

Usaha penyelesaian masalah awal tertumpu pada tetapan pangkalan data. Skrip lama menggunakan enjin pangkalan data tersuai, manakala skrip baharu menggunakan MySQL. Untuk memastikan keserasian, pembangun mengesahkan bahawa set aksara dan pengumpulan untuk pangkalan data MySQL telah ditetapkan kepada UTF-8 dan UTF-8_persian_ci, masing-masing.

Gelagat Pelik

Walaupun menetapkan set aksara dan himpunan yang betul, percanggahan itu berterusan. Skrip lama terus memaparkan aksara Parsi dengan betul, manakala skrip baharu masih menunjukkan teks bercelaru.

Punca Punca: Kecelakaan Sambungan

Selepas mendalami isu tersebut , pembangun menemui perincian yang halus tetapi penting: sambungan pangkalan data yang digunakan oleh skrip lama telah ditetapkan kepada Latin1. Tetapan yang nampaknya tidak berbahaya ini mempunyai implikasi yang ketara untuk pengekodan data.

Bagaimana Ia Berlaku

Apabila data pada mulanya dimasukkan ke dalam pangkalan data menggunakan skrip lama, PHP menghantar rentetan dikodkan UTF-8 ke pangkalan data. Memandangkan sambungan ditetapkan kepada Latin1, pangkalan data mentafsirkan bait yang mewakili aksara Parsi sebagai nilai Latin1. Akibatnya, aksara telah disimpan dalam pangkalan data dalam pengekodan yang salah.

Penyelesaian: Penukaran Pangkalan Data

Untuk menyelesaikan ralat ukiran, pembangun terpaksa menukar data dalam pangkalan data ke format UTF-8 yang betul. Ini boleh dicapai menggunakan pernyataan SQL berikut:

SELECT CONVERT(BINARY CONVERT(field_name USING latin1) USING utf8) FROM table_name

Setelah penukaran selesai, aksara Parsi disimpan dalam pangkalan data dalam pengekodan UTF-8 yang betul. Skrip baharu kini boleh mendapatkan semula dan memaparkan data dengan betul, sepadan dengan output skrip lama.

Atas ialah kandungan terperinci Mengapa Aksara Parsi Saya Bercelaru Apabila Memindahkan Data daripada Skrip Lama ke MySQL?. 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