Membetulkan Aksara Latin1 Disimpan sebagai UTF8 dalam Jadual MySQL
Isu anda timbul daripada penukaran data Latin1 yang tidak betul kepada UTF8 semasa pemasukan. Walaupun menetapkan set aksara yang betul, data lama kekal rosak dengan aksara yang salah. Untuk membetulkan keadaan ini, kita perlu menukar data yang terjejas kepada perwakilan UTF8 yang betul.
Penyelesaian yang disyorkan melibatkan penggunaan fungsi MySQL:
convert(cast(convert(name using latin1) as binary) using utf8)
Fungsi ini mengambil data lajur nama, mentafsirkannya sebagai binari Latin1, dan kemudian menukarnya kepada UTF8. Penukaran luar kepada binari memastikan data dikendalikan sebagai data mentah, menghalang penukaran set aksara selanjutnya daripada merosakkannya.
Berikut ialah contoh pertanyaan:
UPDATE `table` SET `name` = convert(cast(convert(name using latin1) as binary) using utf8) WHERE `name` LIKE '%[non-UTF8 characters]%'
Pertanyaan ini mengemas kini semua baris dengan bukan -UTF8 aksara dalam lajur nama, memastikan data ditukar dengan betul.
Nota: Jika proses pengekodan asal mengubah sedikit data, anda mungkin perlu meninggalkan penukaran dalaman kepada binari Latin1 dalam panggilan fungsi tukar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membetulkan Aksara Latin1 yang Disimpan dengan Salah sebagai UTF8 dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!