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

Windows CMD 下 MySQL 中文亂碼根因與解決方案

     編輯:MySQL 資料庫相關知識

現象:MySQL 服務端與資料庫均設為 UTF-8,應用程式寫入中文正常,但在 Windows CMD 交互式客戶端:

  • 插入中文報錯:Incorrect string value: '\xB2\xE2\xCA\xD4' for column 'title' at row 1
  • 查詢已有中文顯示亂碼

根因分析

  1. 右鍵 CMD 標題欄 → 屬性 → 選項,查看「目前代碼頁」為 GBK (936),而非 UTF-8 (65001)。
  2. CMD 以 GBK 編碼發送 SQL 語句,MySQL 按連接字元集(預設 UTF-8)解碼,導致字節序列錯位。
  3. 資料庫內部存儲**無亂碼**,純屬客戶端顯示與輸入編碼不匹配。

解決方案

方案 1:臨時切換 CMD 代碼頁(推薦,無副作用)

chcp 65001
# 執行後 CMD 切換至 UTF-8 模式,需選擇支援 Unicode 的字型(如「新細明體」/「Consolas」)

後續在同一 CMD 視窗操作 MySQL,中文輸入輸出均正常。

方案 2:MySQL 連接指定字元集

mysql -u root -p --default-character-set=gbk
# 強制連接層使用 GBK,與 CMD 編碼一致

方案 3:修改 MySQL 客戶端預設字元集

[mysql]
default-character-set=gbk
# 在 my.ini [mysql] 區段添加,永久生效

方案 4:使用圖形化管理工具(Navicat、Workbench、DBeaver 等)

GUI 工具內部處理編碼轉換,無此問題,適合日常開發運維。

最佳實踐建議

  • 開發/測試環境:習慣使用 chcp 65001 或 GUI 工具。
  • 生產環境腳本:SQL 檔案存為 UTF-8 無 BOM,執行時指定 --default-character-set=utf8mb4。
  • 統一字元集:全鏈路(資料庫、表、連接、應用、客戶端)強制 utf8mb4,徹底杜絕編碼問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved