我正在使用phpMyAdmin工作,我的name列中有阿拉伯字元值,例如کلب الرقيÙ'Ø© علی الع²ÛŒØ²Ø‰ ,我想將它們轉換為正確的形式。
我嘗試了以下查詢,並將表中的大多數記錄轉換為正確的形式。
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);
我還嘗試了其他方法。
UPDATE guestbook SET name = CONVERT(BINARY CONVERT(name USING binary) USING utf8mb4);
但其中幾個保持不變,並顯示以下錯誤。
#1977 - Cannot convert 'utf8' character 0xD8AD to 'latin1'
我還嘗試了這個查詢。 :
SELECT id,name, CONVERT(BINARY CONVERT(name USING latin1) USING utf8mb4) AS converted_name FROM guestbook;
這個查詢運作良好,完美地顯示了未轉換的字元。但是當我使用更新查詢時,它不起作用。
這是阿拉伯文本的亂碼或"雙重編碼"。
有幾種方法可以修復資料。只有一種方法可以改善它,其他方法會使情況變得更糟。
你看一下這個UTF-8字元的問題;我看到的不是我儲存的內容並按照其中關於取得資料庫中內容的十六進位值的建議進行操作,此外還提供目前模式定義的SHOW CREATE TABLE。也請提供SHOW VARIABLES LIKE 'char%'和連接參數。
在備份各種ALTER和CONVERT之前,請提供十六進位值,我可能會選擇正確的轉換方法。