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

MySQL 字符編碼三層架構與最佳實踐

     編輯:MySQL 綜合教學

三大編碼層級

MySQL 透過三個層級管理字符編碼,正確設定可避免亂碼:

結果集編碼

查詢結果回傳給客戶端時,會依 character_set_results 轉碼。

建議設定策略

  1. 統一使用 UTF-8(或 utf8mb4):資料庫、表、欄位預設皆設為 utf8mb4,支援完整 Unicode(含 Emoji)。
  2. 連接時指定編碼:應用程式連接字串加入 characterEncoding=utf8(JDBC)或執行 SET NAMES utf8mb4。
  3. 避免過度細粒度設定:除非有跨系統整合需求,否則不建議在欄位層級單獨指定編碼,增加維護複雜度。

常見亂碼成因

  • 資料庫為 latin1,但應用寫入 UTF-8 資料 → 查詢時出現雙重編碼亂碼。
  • 客戶端編碼(如 Windows CMD 預設 GBK)與資料庫不一致,未執行 SET NAMES。

快速檢查命令

SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
層級系統變數說明
客戶端character_set_client客戶端發送 SQL 時使用的編碼
連接層character_set_connectionServer 接收後轉換為此編碼進行內部處理
伺服器/資料庫/表/欄位character_set_server / character_set_database / 表預設 / 欄位預設資料實際儲存編碼,層層繼承