首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 匯入資料亂碼完整解決方案:四大實戰方法

     編輯:MySQL 資料庫相關知識

核心原則

「資料庫編碼、表編碼、連線編碼、檔案編碼」四者必須一致。建庫時指定 CHARSET=utf8mb4(或 utf8),避免預設 latin1 導致後續麻煩。

方法一:mysqldump 導入指定字元集參數

mysql -u root -p password < import.sql --default-character-set=utf8mb4

適用於命令列直接導入 SQL 檔,強制解析為指定編碼。

方法二:MySQL 客戶端互動模式設定連線編碼

mysql -u root -p
USE dbname;
SET NAMES utf8mb4;  -- 或 utf8/gbk 視檔案而定
SOURCE /path/to/import.sql;

SET NAMES 等同於同時設定 character_set_client、character_set_connection、character_set_results。

方法三:GUI 工具(SQLyog / Workbench / DBeaver)直接貼上執行

  1. 開啟 SQL 編輯器。
  2. 用文字編輯器開啟 .sql,全選複製。
  3. 貼上編輯器執行(工具會依當前連線編碼處理)。

適用於中小檔案(< 50MB),避免命令列編碼參數遺漏。

方法四:文字編輯器轉換 SQL 檔編碼後再導入

  1. 用 Notepad++ / VS Code / UltraEdit 開啟 SQL 檔。
  2. 另存新檔,編碼選 UTF-8(無 BOM) 或 UTF-8MB4。
  3. 再用方法一或二導入。

針對原始導出檔編碼錯誤(如被誤存為 ANSI/GBK)的補救。

進階排查清單

現象可能原因驗證指令
中文變 ???資料庫/表為 latin1SHOW CREATE TABLE t; 檢查 CHARSET
中文變亂碼(如 鏂版澘)連線編碼與資料不符SHOW VARIABLES LIKE 'character_set%';
Emoji 截斷/報錯使用 utf8(僅 3 字節)改用 utf8mb4 重建表

最佳實踐

  1. 新建庫表統一 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci。
  2. 應用程式連線字串加 characterEncoding=utf8mb4。
  3. 導出時加 --default-character-set=utf8mb4。
  4. 定期 CHECK TABLE 檢查編碼一致性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved