字符集配置不當是中文亂碼首因。本文提供Windows與Linux雙平台上,通過修改配置文件實現MySQL預設字符集永久切換為UTF-8的標準化操作,解決「臨時SET NAMES」反覆配置痛點。
MySQL啟動時讀取配置文件(my.cnf/my.ini),[client]與[mysqld]區段的default-character-set決定:
一勞永逸,無需代碼層SET NAMES。
net stop mysql
# 或 services.msc 圖形界面停止
my.inimy-medium.ini為my.ini[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
# 5.5+ 建議顯式指定
character-set-server=utf8
collation-server=utf8_general_ci
net start mysql
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set_%';"
# 期望輸出:client/connection/results/database/server 均為 utf8
systemctl stop mysqld
# 或 /etc/init.d/mysqld stop
# 或 bin/mysqladmin -u root shutdown
/etc/my.cnf(優先)support-files/my-medium.cnf複製[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
systemctl start mysqld
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set_%';"
| 舊參數 (≤5.1) | 新參數 (≥5.5) | 說明 |
|---|---|---|
| default-character-set | character-set-server | 伺服器端默認字符集 |
| default-collation | collation-server | 伺服器端默認排序規則 |
| default-character-set (client) | default-character-set | 客戶端保持不變 |