萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

mysqldump 備份資料庫中文亂碼完整解決方案

前言

使用 mysqldump 備份 MySQL 資料庫時,若伺服器字元集設為 latin1,匯出的中文資料常會變成亂碼。本文整理實務上常見的亂碼成因與解決方法,助您快速排除編碼困擾。

核心解決方法:指定預設字元集

最直接的做法是在備份指令中加入 --default-character-set 參數,強制指定輸出編碼:

mysqldump -h 127.0.0.1 -P 3307 -u username --default-character-set=gbk -p databasename > dumpfile.txt

參數說明

  • -h:資料庫主機 IP
  • -P:連接埠號(必須單獨使用,不可緊接在主機後)
  • -u:使用者名稱
  • --default-character-set:若資料內容為中文,可指定 gbk 或 utf8;即使資料庫本身為 latin1,匯出檔案的中文也能正常顯示
  • -p:密碼(輸入後會提示互動式輸入)
  • databasename:目標資料庫名稱
  • > dumpfile.txt:輸出檔案路徑

命令列匯入資料時的亂碼處理

當 SQL 檔案較大需用命令列匯入,若出現亂碼,可在進入 MySQL 後依序執行:

USE database_name;
SET CHARACTER SET utf8;  -- 或 GBK,視檔案編碼而定
SOURCE /path/to/example.sql;

總結:匯入匯出亂碼的根本原因

中文亂碼多半源於「資料庫全域編碼」與「個別資料庫/資料表編碼」不一致。解決原則:

  1. 匯出時明確指定 --default-character-set=utf8(或 gbk)
  2. 匯入前先設定 SET NAMES utf8 或 SET CHARACTER SET utf8
  3. 長遠來看,建議統一資料庫、資料表、連線編碼為 utf8mb4

快速指令範例

# 匯出(指定 UTF-8)
mysqldump -u username --default-character-set=utf8 -p dbname > backup.sql

# 匯入(先設定編碼)
mysql -u username -p dbname --default-character-set=utf8 < backup.sql
copyright © 萬盛學電腦網 all rights reserved