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

MySQL 中文亂碼終極解決方案:從客戶端到 mysqldump 完整攻略

     編輯:MySQL 綜合教學

MySQL 中文亂碼終極解決方案:從客戶端到 mysqldump 完整攻略

中文亂碼是 MySQL 使用者最頭痛的問題之一。本文基於 Win7 + MySQL 5.6 實測環境(庫表均 utf8),系統梳理客戶端操作、mysqldump 匯出、控制台顯示差異三大場景的解決方案,並揭示控制台編碼對顯示的影響機制。

一、客戶端互動操作亂碼解決

1. 一鍵設定連線字符集(推薦)

SET NAMES gbk;  -- 或 utf8,視客戶端編碼而定

SET NAMES 等同於同時設定 character_set_client、character_set_connection、character_set_results 三個變量。

2. 單獨調整結果集編碼

SHOW VARIABLES LIKE 'char%';  -- 先查看當前所有字符集變量
SET character_set_results=gbk;  -- 僅修改結果集編碼

注意:上述設定僅對當前連線有效,服務重啟後失效。永久生效需修改 my.ini 的 [mysqld] 區塊加入 character-set-server=utf8。

二、mysqldump 匯出亂碼深度解析

實測環境

  • 資料庫/表字符集:utf8
  • 控制台:Windows cmd(預設 gbk 編碼)

關鍵發現

場景表結構(含中文註釋)表資料(中文內容)
控制台直接輸出無論 --default-character-set 設為 gbk/utf8/latin1,永遠亂碼需加 --default-character-set=gbk 才正常
導出到檔案 (> file.sql)總是正常(用 UltraEdit 打開)需加 --default-character-set=gbk 才正常

核心結論

  1. 表結構中的中文註釋:控制台顯示受限於 cmd 自身編碼機制,導出檔案則繞過控制台直接寫入,故總是正確。
  2. 表資料中的中文:受 --default-character-set 參數控制,必須設為 gbk(匹配 cmd 編碼)才能在控制台正常顯示;導出檔案同理。
  3. 參數作用範圍:--default-character-set 僅影響資料部分,對表結構註釋無效。

三、最佳實踐建議

  • 日常操作:客戶端連線執行 SET NAMES utf8(或 gbk),確保寫入/讀取編碼一致。
  • 備份匯出:務必導出到檔案,命令:
    mysqldump -uroot -p --default-character-set=gbk db_name table_name > backup.sql
    用編輯器(VS Code、UltraEdit、Notepad++)以 UTF-8 打開即可完美呈現結構與資料。
  • 避坑指南:不要在控制台直接查看 mysqldump 輸出判斷亂碼,控制台渲染機制極易誤導。

四、常用字符集檢查命令速查

SHOW CREATE TABLE tbl_name;           -- 看表字符集
SHOW FULL COLUMNS FROM tbl_name;      -- 看欄位字符集
SHOW TABLES;
DESC tbl_name;
SHOW DATABASES;
SHOW CREATE DATABASE db_name;

掌握編碼流向(Client → Connection → Server → Storage → Results),亂碼問題自然迎刃而解。

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