我正在使用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之前,請提供十六進位值,我可能會選擇正確的轉換方法。