Saya bekerja dengan phpMyAdmin dan saya mempunyai nilai aksara Arab dalam lajur nama saya seperti کلب الرقيÙ'Ø© علی العزیزبوری, Saya Mahu menukarnya ke dalam bentuk yang betul.
Saya mencuba pertanyaan berikut dan ia menukar kebanyakan rekod dalam jadual ke dalam bentuk yang betul.
ALTER DATABASE alfeker_book CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE guestbook CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; UPDATE guestbook SET name = CONVERT(BINARY CONVERT(name USING latin1) USING utf8mb4);
Saya juga mencuba kaedah lain.
UPDATE guestbook SET name = CONVERT(BINARY CONVERT(name USING binary) USING utf8mb4);
Tetapi beberapa daripadanya tetap sama dan menunjukkan ralat berikut.
#1977 - Cannot convert 'utf8' character 0xD8AD to 'latin1'
Saya juga mencuba pertanyaan ini. :
SELECT id,name, CONVERT(BINARY CONVERT(name USING latin1) USING utf8mb4) AS converted_name FROM guestbook;
Pertanyaan ini berfungsi dengan baik dan memaparkan aksara yang belum ditukar dengan sempurna. Tetapi apabila saya menggunakan pertanyaan kemas kini ia tidak berfungsi.
Ini adalah omong kosong atau "pengekodan berganda" teks Arab.
Terdapat beberapa cara untuk membaiki data. Hanya ada satu cara untuk memperbaikinya, cara lain akan memburukkannya.
Anda lihat isu aksara UTF-8 ini; apa yang saya lihat bukanlah apa yang saya simpan dan ikuti nasihat di sana tentang mendapatkan nilai hex apa yang ada dalam pangkalan data, sebagai tambahan kepada definisi skema semasa SHOW BUAT JADUAL. Sila berikan juga SHOW VARIABLE LIKE 'char%' dan parameter sambungan.
Sebelum menyandarkan pelbagai PINDAAN dan PENUKARAN, sila berikan nilai hex dan saya mungkin memilih kaedah penukaran yang betul.