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

MySQL 匯入匯出亂碼終極解法:統一字元集參數與跨平台遷移實戰

     編輯:MySQL 資料庫相關知識

Linux(預設 UTF-8)與 Windows(預設 GBK)之間進行 MySQL 資料遷移,最常遇到的就是中文亂碼,甚至衍生出「Unknown MySQL server host」等連線錯誤。核心原因在於匯出與匯入的字元集不一致。本文提供標準化解決流程,確保跨平台遷移零亂碼。

亂碼根因分析

  • mysqldump 預設使用作業系統預設字元集(Linux: UTF-8, Windows: GBK)。
  • 若匯出端與匯入端字元集不同,SQL 檔案中的中文位元組序列會被錯誤解碼。
  • 後續匯入時,MySQL 依據連線字元集解析 SQL,導致資料損壞或語法錯誤。

標準化作業流程(以 UTF-8 為基準)

步驟 1:匯出時明確指定字元集

mysqldump -u root -p --default-character-set=utf8 dbname tablename > backup.sql

步驟 2:匯入時同樣指定字元集

mysql -u root -p --default-character-set=utf8 dbname < backup.sql
關鍵原則: 匯出與匯入的 --default-character-set 參數必須完全一致,且建議統一使用 utf8(或 utf8mb4 支援 Emoji)。

進階驗證與疑難排解

  1. 檢視 SQL 檔案編碼:使用 Notepad++ / VS Code 開啟 backup.sql,確認編碼顯示為 UTF-8,中文內容可正常閱讀。
  2. 資料庫/資料表字元集一致性:
    SHOW VARIABLES LIKE 'character_set%';
    SHOW CREATE TABLE tablename;
    確認 character_set_database、character_set_server、資料表 DEFAULT CHARSET 皆為 utf8 / utf8mb4。
  3. 連線字元集設定:應用程式連線字串加入 characterEncoding=utf8(JDBC)或執行 SET NAMES utf8(PHP/CLI)。

常見誤區

錯誤做法正確做法
僅修改 my.cnf/my.ini 的 default-character-set必須在 mysqldump/mysql 指令顯式指定參數
匯出用 utf8、匯入用 gbk(或反向)雙端統一同一字元集
直接用 phpMyAdmin 匯出再用命令列匯入phpMyAdmin 匯出時勾選「字元集:utf8」,匯入前執行 SET NAMES utf8

遵循「匯出指定、匯入指定、檔案驗證、連線一致」四步驟,即可徹底解決 MySQL 跨平台遷移亂碼問題,保障資料完整性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved