首頁  >  問答  >  主體

如何解決錯誤:#1977 - 無法將 'utf8' 字元 0xD8AD 轉換為 'latin1'。

我正在使用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;

這個查詢運作良好,完美地顯示了未轉換的字元。但是當我使用更新查詢時,它不起作用。

P粉574695215P粉574695215459 天前555

全部回覆(1)我來回復

  • P粉460377540

    P粉4603775402023-07-19 00:22:56

    這是阿拉伯文本的亂碼或"雙重編碼"。

    有幾種方法可以修復資料。只有一種方法可以改善它,其他方法會使情況變得更糟。

    你看一下這個UTF-8字元的問題;我看到的不是我儲存的內容 並按照其中關於取得資料庫中內容的十六進位值的建議進行操作,此外還提供目前模式定義的SHOW CREATE TABLE。也請提供SHOW VARIABLES LIKE 'char%'和連接參數。


    在備份各種ALTER和CONVERT之前,請提供十六進位值,我可能會選擇正確的轉換方法。


    回覆
    0
  • 取消回覆