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

MySQL 編碼設定快速指南:徹底解決中文亂碼

     編輯:MySQL 綜合教學

問題背景

中文亂碼是 MySQL 初學者最常遇到的坑。本文提供 Windows 環境下最直接的解決方案,適用於 MySQL 5.5+ 版本。

核心解決步驟

1. 確認 MySQL 進入環境變數

# Windows CMD
mysql
# 若提示「不是內部命令」,將 MySQL bin 目錄加入 PATH
# 例:C:\Program Files\MySQL\MySQL Server 5.7\bin

2. 修改 my.ini 核心參數

找到 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

3. 重啟 MySQL 服務

net stop mysql
net start mysql
# 或透過 services.msc 圖形介面重啟

4. 驗證生效

mysql -uroot -p
SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';

預期輸出關鍵項均為 utf8mb4 / utf8mb4_unicode_ci。

為什麼選 utf8mb4 而非 utf8?

項目utf8 (MySQL 別名 utf8mb3)utf8mb4
最大位元組34
Emoji 支援❌ 儲存會截斷/報錯✅ 完整支援
生僻字支援部分缺失完整 Unicode
MySQL 版本所有版本5.5.3+

常見避坑提醒

  • 只改 database/table 不改 server:新建表仍會繼承 server 預設 latin1,必須在 my.ini 設定 character-set-server
  • 應用層連接字串未指定編碼:JDBC 需 ?characterEncoding=UTF-8,Python 需 charset='utf8mb4'
  • 舊資料已為 latin1 儲存 UTF-8 位元組:需按「雙重編碼修復」流程處理,單純改配置無效

一鍵驗證腳本

@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% 可徹底解決。

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