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

MySQL中文亂碼終極指南:字符集配置與連接參數全解析

     編輯:MySQL 綜合教學

MySQL 中文亂碼問題的核心在於三層字符集的一致性:表/列定義、連接參數、服務端默認設置。本文系統梳理排查步驟與永久修復方案。

一、檢視表與列的字符集

使用以下命令查看建表語句或列詳細信息:

SHOW CREATE TABLE t1;
-- 或
SHOW FULL COLUMNS FROM t1;

關鍵點:確保目標列(如 c1 varchar(30))的 Collation 為中文兼容字符集,常見選項:

  • gbk / gbk_chinese_ci(簡體中文,最常用)
  • utf8 / utf8_general_ci(Unicode,推薦新項目)
  • gb2312、big5(較舊標準)

二、檢查當前連接參數

SHOW VARIABLES LIKE 'char%';

重點關注三個「連接三參」:

參數含義
character_set_client客戶端發送數據的編碼
character_set_connection服務端接收後轉換的編碼
character_set_results結果集返回給客戶端的編碼

這三者必須與表/列字符集一致,否則會在轉換環節產生亂碼。

三、快速修正:SET NAMES

會話級臨時生效(斷開失效):

SET NAMES 'gbk';  -- 或 utf8
-- 等同於同時設置:
-- SET character_set_client = gbk;
-- SET character_set_connection = gbk;
-- SET character_set_results = gbk;

四、永久生效:修改配置文件

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

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

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

注意:修改後需重啟 MySQL 服務(service mysqld restart)。

五、避坑提示

  1. 資料庫級字符集(character_set_database)僅影響新建表的默認值,不影響現有表。
  2. 系統字符集(character_set_system)固定為 utf8,不可修改,用於標識符存儲。
  3. 若已出現亂碼數據,需結合 ALTER TABLE ... CONVERT TO CHARACTER SET ... 重新轉換數據。

掌握「表定義、連接參數、配置文件」三位一體,中文亂碼將不再是難題。

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