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

MySQL 中文亂碼徹底解決:my.ini 配置、字符集變數設定與 SQL-Front 驗證圖文教程

     編輯:MySQL 綜合教學

Windows MySQL 中文亂碼圖文級解決教程 (含 my.ini、字符集變數、客戶端驗證)

現象:插入中文報錯或顯示亂碼 (如 ???、锟斤拷)。

步驟 1:修改 my.ini 設定預設字符集

  1. 找到安裝目錄 my.ini (如 C:\Program Files\MySQL\MySQL Server 5.6\my.ini)
  2. 記事本開啟,找到 [client] 和 [mysql] 區段
  3. 確保含 default-character-set=utf8 (或 utf8mb4):
[client]
port=3306
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

保存後 重啟 MySQL 服務 (服務管理器或 net stop/start mysql)。

步驟 2:客戶端會話級設定字符集變數 (即時生效)

mysql> SHOW VARIABLES LIKE '%char%';
# 觀察 character_set_client/connection/results/database/server

mysql> SET character_set_database = utf8;
mysql> SET character_set_server = utf8;
mysql> SET character_set_client = gbk;      -- 若客戶端為 gbk (如 cmd 預設)
mysql> SET character_set_connection = gbk;
mysql> SET character_set_results = gbk;     -- 解決 SELECT 顯示亂碼

# 一鍵等效
mysql> SET NAMES gbk;  -- 視客戶端編碼而定,utf8 環境用 SET NAMES utf8

步驟 3:驗證插入與查詢

mysql> INSERT INTO test_tbl (name) VALUES ('中文測試');
Query OK, 1 row affected

mysql> SELECT * FROM test_tbl;
+----+--------------+
| id | name         |
+----+--------------+
| 1  | 中文測試     |  <-- 正常顯示
+----+--------------+

步驟 4:SQL-Front 圖形客戶端測試 (免命令列亂碼干擾)

  • SQL-Front 內部處理編碼轉換,通常無需額外設定即可正常顯示中文。
  • 若 SQL-Front 正常但命令列亂碼,確認命令列編碼 (chcp 65001 切換 UTF-8) 與 SET NAMES 一致。

關鍵變數關係圖解

應用程式 (gbk/utf8) 
    ↓ character_set_client
MySQL Server 解碼
    ↓ character_set_connection
內部處理 (utf8)
    ↓ character_set_results
應用程式 接收顯示

三者不一致即亂碼。生產環境建議全鏈路 utf8mb4,避免轉碼損耗與錯誤。

常見誤區

  • 只改 my.ini 不重啟服務 → 不生效
  • 只執行 SET NAMES utf8 但表編碼為 latin1 → 存入仍錯誤
  • 混用 utf8 (MySQL 3 字節子集) 和 utf8mb4 (完整 Unicode) → Emoji 存入截斷
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved