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

解決 MySQL 客戶端終端機中文亂碼問題:字符集不匹配診斷與修復

     編輯:MySQL 綜合教學

問題現象

在 Windows DOS 視窗下使用 MySQL 客戶端查詢包含中文的資料表時,中文顯示為亂碼(如 或 亂碼字符),嚴重影響資料閱讀與除錯。

根因分析

MySQL 客戶端輸出視窗使用的字符編碼(character_set_results)與作業系統終端機編碼不一致。Windows 中文環境預設使用 GB2312/GBK,而 MySQL 預設常為 UTF-8。

診斷步驟

mysql> SHOW VARIABLES LIKE 'char%';

關鍵輸出:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_results    | utf8   <-- 關鍵:結果集編碼 |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
+--------------------------+----------------------------+

即時修復方案(當前會話生效)

mysql> SET character_set_results=gb2312;

執行後再次查詢,中文即可正常顯示。

永久修復方案(配置文件)

編輯 my.ini(Windows)或 my.cnf(Linux),在 [client] 區段添加:

[client]
default-character-set=gbk

重啟 MySQL 服務生效。若仍有問題,同步設置 [mysql] 區段:

[mysql]
default-character-set=gbk

Java 應用連線層面的徹底解決

若上述均無效,問題多在 JDBC 連線層。在建立連線後、執行查詢前執行:

SET NAMES 'utf8';

等同於:

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

或在 JDBC URL 顯式指定:

jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf8&autoReconnect=true

總結

層級方案生效範圍
會話級SET character_set_results=gb2312;當前連線
配置文件[client] default-character-set=gbk所有客戶端連線
應用連線SET NAMES 'utf8' 或 JDBC URL 參數Java 應用連線池

建議採用 UTF-8 全鏈路統一編碼(資料庫、表、連線、應用),避免編碼轉換帶來的亂碼風險。

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