使用 mysqldump 備份 MySQL 資料庫時,若伺服器字元集設為 latin1,匯出的中文資料常會變成亂碼。本文整理實務上常見的亂碼成因與解決方法,助您快速排除編碼困擾。
最直接的做法是在備份指令中加入 --default-character-set 參數,強制指定輸出編碼:
mysqldump -h 127.0.0.1 -P 3307 -u username --default-character-set=gbk -p databasename > dumpfile.txt
gbk 或 utf8;即使資料庫本身為 latin1,匯出檔案的中文也能正常顯示當 SQL 檔案較大需用命令列匯入,若出現亂碼,可在進入 MySQL 後依序執行:
USE database_name;
SET CHARACTER SET utf8; -- 或 GBK,視檔案編碼而定
SOURCE /path/to/example.sql;
中文亂碼多半源於「資料庫全域編碼」與「個別資料庫/資料表編碼」不一致。解決原則:
--default-character-set=utf8(或 gbk)SET NAMES utf8 或 SET CHARACTER SET utf8utf8mb4# 匯出(指定 UTF-8)
mysqldump -u username --default-character-set=utf8 -p dbname > backup.sql
# 匯入(先設定編碼)
mysql -u username -p dbname --default-character-set=utf8 < backup.sql