首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 字符集實戰:避免亂碼的核心原則與設定檢查清單

     編輯:MySQL 資料庫相關知識

MySQL 字符集亂碼根因與解決之道

影響編程的關鍵只有兩個字符集:**客戶端字符集** 與 **資料庫字符集** (伺服器字符集較少直接影響)。

核心原則

**寫入時的客戶端字符集 = 讀取時的客戶端字符集** → 無亂碼。
MySQL 會在寫入時將客戶端編碼轉為資料庫編碼存儲,讀取時再轉回客戶端編碼。若兩次客戶端編碼一致,中間轉換雖發生但結果正確;若資料庫編碼也一致,更可省去轉換效能損耗,並利於未來遷移。

客戶端字符集設定方式

客戶端類型設定方法
控制台my.ini 中 [client] 區段設定
EMS 等 GUI 工具連線配置優先,否則回退 my.ini
JDBC連接串指定:?useUnicode=true&characterEncoding=gbk
PHPmysqli_set_charset($link, 'utf8') 或 SET NAMES utf8

常用檢視命令

  1. SHOW VARIABLES LIKE '%char%'; — 檢視 character_set_client、_database、_server
  2. SHOW TABLE STATUS FROM db LIKE 'table%'; — 資料表字符集
  3. SHOW FULL COLUMNS FROM table; — 欄位字符集
  4. SHOW CHAR SET; — 系統支援字符集列表

最佳實踐建議

  1. 資料庫/資料表/欄位統一使用 UTF-8 (或 utf8mb4 支援 Emoji)。
  2. 所有客戶端連接統一設定為 UTF-8。
  3. 應用啟動後立即執行 SET NAMES utf8 (或對應編碼)。
  4. 遷移時若源目標均為 UTF-8,無需轉碼,風險最低。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved