在使用 Navicat Premium 管理 MySQL 時,匯入包含中文的 SQL 檔案經常出現亂碼問題。這通常是因為用戶端連線字元集、檔案編碼、資料庫儲存編碼三者不一致導致。本文提供一套經實測可行的完整排查與修正流程。
匯入 SQL 後,中文欄位顯示為亂碼(如 `????` 或亂碼符號),但英文數字正常。
在 Navicat 查詢視窗執行:
SHOW VARIABLES LIKE 'char%';
重點觀察 character_set_client、character_set_connection、character_set_results 是否為預期編碼(如 gbk)。若仍為 latin1,需進一步設定。
SET NAMES 'gbk';
再次執行 SHOW VARIABLES LIKE 'char%'; 確認 client/connection/results 已變為 gbk。此時連線層面編碼已對齊。
SET NAMES 'utf8mb4';)。.sql/.txt 文字檔時,檔案實體編碼必須與 SET NAMES 指定編碼一致,否則仍會亂碼。若資料庫預設字元集非 utf8,可透過 SQL 修改:
SET character_set_server = 'utf8';
但修改 server 字元集不影響既有資料,僅影響新建表的預設值。生產環境建議在建庫時指定 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci。
SET NAMES '編碼'; 後三個 client 變數 = ?四者一致,亂碼即可徹底解決。