Apabila memulakan tugas sukar penukaran pangkalan data daripada Latin1 kepada UTF-8, adalah penting untuk menilai data keserasian. Artikel ini meneroka dua kaedah untuk mengesan aksara UTF-8 dalam lajur berkod Latin1.
Pilihan 1: Perl dan MySQL Dump
Mengekstrak data menggunakan MySQL dump dan menganalisisnya secara luaran dengan Perl boleh menjadi pilihan yang berdaya maju. Keupayaan Unicode Perl membolehkan pengesanan pengekodan aksara. Walau bagaimanapun, kaedah ini menjadi menyusahkan untuk set data yang besar dan kurang cekap daripada fungsi terbina dalam MySQL.
Pilihan 2: Fungsi MySQL
MySQL menyediakan fungsi yang memudahkan UTF- 8 pengenalan watak. Khususnya, fungsi LENGTH() dan CHAR_LENGTH() boleh digabungkan untuk mengenal pasti baris yang mengandungi aksara berbilang bait. Pertanyaan PILIH nama DARI pelanggan WHERE LENGTH(nama) != CHAR_LENGTH(nama); mengasingkan baris dengan aksara UTF-8 yang berpotensi.
Pengesahan Visual
Walaupun mengenal pasti baris dengan aksara berbilang bait, membezakan antara aksara beraksen LATIN1 dan aksara UTF-8 boleh mencabar. Untuk mendapatkan pandangan muktamad, fungsi CONVERT() MySQL boleh digunakan untuk menukar data binari kepada pengekodan Latin1 dan UTF-8. Hasilnya boleh dibandingkan secara visual menggunakan pertanyaan berikut:
SELECT CONVERT(CONVERT(name USING BINARY) USING latin1) AS latin1, CONVERT(CONVERT(name USING BINARY) USING utf8) AS utf8 FROM users WHERE CONVERT(name USING BINARY) RLIKE CONCAT('[', UNHEX('80'), '-', UNHEX('FF'), ']')
Pertanyaan ini menyasarkan baris yang mengandungi aksara "ASCII tinggi", yang mungkin menunjukkan sama ada tanda aksen LATIN1 atau aksara UTF-8. Dengan membandingkan penukaran Latin1 dan UTF-8, pengekodan sebenar menjadi jelas.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Aksara UTF-8 dalam Data Dikodkan Latin1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!