首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

Navicat Premium 匯入 SQL 中文亂碼完整解決方案

     編輯:DB2 教學

Navicat Premium 匯入 SQL 中文亂碼完整解決方案

在使用 Navicat Premium 管理 MySQL 時,匯入包含中文的 SQL 檔案經常出現亂碼問題。這通常是因為用戶端連線字元集、檔案編碼、資料庫儲存編碼三者不一致導致。本文提供一套經實測可行的完整排查與修正流程。

問題現象

匯入 SQL 後,中文欄位顯示為亂碼(如 `????` 或亂碼符號),但英文數字正常。

核心解決步驟

1. 設定連線屬性:指定用戶端字元集

  • 開啟連線屬性 → 進階 頁籤
  • 取消勾選 「使用 MySQL 字元集」
  • 將編碼手動設為 10008 - GB2312(或依實際檔案編碼選擇 UTF-8、GBK 等)

2. 驗證目前連線字元集變數

在 Navicat 查詢視窗執行:

SHOW VARIABLES LIKE 'char%';

重點觀察 character_set_client、character_set_connection、character_set_results 是否為預期編碼(如 gbk)。若仍為 latin1,需進一步設定。

3. 執行 SET NAMES 指定連線編碼

SET NAMES 'gbk';

再次執行 SHOW VARIABLES LIKE 'char%'; 確認 client/connection/results 已變為 gbk。此時連線層面編碼已對齊。

4. 確保 SQL 檔案實體編碼與連線一致

  • 若 SQL 檔案為 GBK 編碼,直接匯入即可。
  • 若檔案為 UTF-8 編碼,需先用編輯器(如 Notepad++、VS Code)另存為 GBK,或將連線編碼改為 UTF-8(SET NAMES 'utf8mb4';)。
  • 批次匯入 .sql/.txt 文字檔時,檔案實體編碼必須與 SET NAMES 指定編碼一致,否則仍會亂碼。

5. 伺服器端字元集調整(視情況)

若資料庫預設字元集非 utf8,可透過 SQL 修改:

SET character_set_server = 'utf8';

但修改 server 字元集不影響既有資料,僅影響新建表的預設值。生產環境建議在建庫時指定 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci。

常見誤區與提醒

  • 只改連線不改檔案編碼:檔案實際位元組未轉換,資料庫仍會依連線編碼解碼,導致錯誤。
  • 混用 utf8 與 utf8mb4:MySQL 的 utf8 實為 utf8mb3,無法儲存 Emoji,建議全鏈路使用 utf8mb4。
  • Navicat 版本差異:新版 Navicat 15+ 預設支援 utf8mb4,舊版可能需手動指定。

快速檢核清單

  1. SQL 檔案編碼 = ? (GBK / UTF-8 / UTF-8 with BOM)
  2. Navicat 連線進階設定編碼 = ?
  3. 執行 SET NAMES '編碼'; 後三個 client 變數 = ?
  4. 資料庫/資料表/欄位預設字元集 = ?

四者一致,亂碼即可徹底解決。

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