Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Watak Parsi Saya Bercelaru Selepas Penukaran Pangkalan Data?

Mengapa Watak Parsi Saya Bercelaru Selepas Penukaran Pangkalan Data?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-15 03:36:10402semak imbas

Why Are My Persian Characters Garbled After a Database Conversion?

Kuantari Pengekodan Aksara Pelik: Kehilangan Data Tersimpan dalam Penukaran Pangkalan Data

Soalan:

Dalam usaha untuk merombak yang sedia ada laman web, pembangun menghadapi isu pengekodan aksara yang membingungkan. Skrip asal memaparkan aksara Parsi dengan betul, menggunakan enjin pangkalan data TUBADBENGINE, manakala skrip yang diubah suai menunjukkan data yang sama dalam format yang tidak dapat ditafsirkan. Apakah yang boleh menjadi punca asas percanggahan ini?

Jawapan:

Perbezaan berpunca daripada konfigurasi sambungan pangkalan data yang tidak ditetapkan kepada pengekodan aksara yang sesuai.

Masalahnya:

  1. Kedai PHP rentetan Parsi sebagai UTF-8 bait.
  2. Sambungan pangkalan data menghantar bait tersebut dengan mengandaikan pengekodan Latin1, yang mana ia bukan.
  3. Pangkalan data mentafsir bait dalam Latin1, menyimpan aksara yang salah.
  4. Apabila skrip yang dirombak mendapatkan semula data, PHP menjangkakan pengekodan UTF-8 dan mentafsir bait dengan tidak betul.

Penyelesaian:

Untuk menyelesaikan isu ini, sambungan pangkalan data mesti ditetapkan kepada pengekodan aksara yang betul. Penukaran ini membetulkan aksara yang disimpan dan memastikan skrip yang dirombak memaparkan data dengan betul.

Selain itu, pertanyaan berikut boleh digunakan untuk menukar data yang terjejas dalam pangkalan data:

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

Sekali penukaran telah berjaya diselesaikan, ia boleh dibuat kekal dengan mengemas kini jadual yang terjejas dengan data yang ditukar.

Atas ialah kandungan terperinci Mengapa Watak Parsi Saya Bercelaru Selepas Penukaran Pangkalan Data?. 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