中文亂碼是 MySQL 初學者最常遇到的坑。本文提供 Windows 環境下最直接的解決方案,適用於 MySQL 5.5+ 版本。
# Windows CMD
mysql
# 若提示「不是內部命令」,將 MySQL bin 目錄加入 PATH
# 例:C:\Program Files\MySQL\MySQL Server 5.7\bin
找到 MySQL 安裝目錄下的 my.ini(或 my.cnf),在 [mysqld] 區塊添加:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
net stop mysql
net start mysql
# 或透過 services.msc 圖形介面重啟
mysql -uroot -p
SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
預期輸出關鍵項均為 utf8mb4 / utf8mb4_unicode_ci。
| 項目 | utf8 (MySQL 別名 utf8mb3) | utf8mb4 |
|---|---|---|
| 最大位元組 | 3 | 4 |
| Emoji 支援 | ❌ 儲存會截斷/報錯 | ✅ 完整支援 |
| 生僻字支援 | 部分缺失 | 完整 Unicode |
| MySQL 版本 | 所有版本 | 5.5.3+ |
character-set-server?characterEncoding=UTF-8,Python 需 charset='utf8mb4'@echo off
mysql -uroot -p -e "SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%';" | findstr /i "utf8mb4"
if %errorlevel% equ 0 (
echo ✅ 字元集配置正確
) else (
echo ❌ 請檢查 my.ini 並重啟服務
)
pause
三步走:環境變數 → my.ini 設定 utf8mb4 → 重啟驗證。新專案直接上 utf8mb4,舊專案評估遷移成本後分批轉換。配置正確、應用層連接字串帶編碼參數,中文亂碼問題 99% 可徹底解決。