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

MySQL字符集配置跨平台指南:Windows與Linux下UTF-8預設編碼一勞永逸設置

     編輯:MySQL 綜合教學

字符集配置不當是中文亂碼首因。本文提供Windows與Linux雙平台上,通過修改配置文件實現MySQL預設字符集永久切換為UTF-8的標準化操作,解決「臨時SET NAMES」反覆配置痛點。

核心原理:配置文件預設字符集生效順序

MySQL啟動時讀取配置文件(my.cnf/my.ini),[client]與[mysqld]區段的default-character-set決定:

  • 客戶端連接默認字符集
  • 伺服器端默認字符集
  • 新建表/庫的默認字符集

一勞永逸,無需代碼層SET NAMES。

Windows 平台配置步驟

1. 停止服務

net stop mysql
# 或 services.msc 圖形界面停止

2. 定位/創建配置文件

  • 安裝目錄下尋找my.ini
  • 不存在則複製my-medium.ini為my.ini

3. 修改關鍵區段

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
# 5.5+ 建議顯式指定
character-set-server=utf8
collation-server=utf8_general_ci

4. 啟動服務驗證

net start mysql
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set_%';"
# 期望輸出:client/connection/results/database/server 均為 utf8

Linux 平台配置步驟

1. 停止服務

systemctl stop mysqld
# 或 /etc/init.d/mysqld stop
# 或 bin/mysqladmin -u root shutdown

2. 定位/創建配置文件

  • /etc/my.cnf(優先)
  • 不存在則從安裝目錄support-files/my-medium.cnf複製

3. 修改關鍵區段(同Windows)

[client]
default-character-set=utf8

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

4. 啟動服務驗證

systemctl start mysqld
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set_%';"

MySQL 5.5+ 參數名稱變更注意

建議兼容寫法:兩組參數並列,舊版忽略新參數,新版覆蓋舊參數。

既有數據轉碼(配置修改不影響現有數據)

配置修改僅影響新建表/庫。既有數據需轉碼:

-- 單表轉碼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

-- 全庫轉碼腳本
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db_name';

驗證清單

  1. SHOW VARIABLES LIKE 'character_set_%'; → 除filesystem/system外均為utf8
  2. SHOW VARIABLES LIKE 'collation_%'; → 均為utf8_general_ci或utf8_unicode_ci
  3. 新建表插入中文 → SELECT HEX(col)驗證編碼正確(中文佔3字節)
  4. 應用層連接字串移除characterEncoding參數測試

常見誤區

  • ❌ 只改[mysqld]不改[client] → 客戶端工具仍用latin1連接
  • ❌ 用utf8mb4但未調整innodb_large_prefix/索引長度(5.7.7+自動處理)
  • ❌ 以為配置修改會自動轉碼既有數據

跨平台統一配置文件法,從源頭消除字符集不一致,是解決中文亂碼最根本、維護成本最低的方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
舊參數 (≤5.1)新參數 (≥5.5)說明
default-character-setcharacter-set-server伺服器端默認字符集
default-collationcollation-server伺服器端默認排序規則
default-character-set (client)default-character-set客戶端保持不變