MySQL 字符集分層管理,排查亂碼問題需從伺服器、資料庫、資料表、欄位四個層級逐級檢查。本文提供三種最常用的查看指令與輸出解讀。
SHOW VARIABLES LIKE '%char%';
關鍵輸出欄位解讀:
| 變數名 | 含義 | 典型值 |
|---|---|---|
character_set_client | 客戶端發送編碼 | utf8 |
character_set_connection | 連線層轉換編碼 | utf8 |
character_set_database | 當前資料庫預設編碼 | utf8 |
character_set_server | 伺服器預設編碼 | utf8 |
character_set_system | 系統識別符編碼(固定 utf8) | utf8 |
character_sets_dir | 字符集檔案目錄 | 路徑 |
SHOW TABLE STATUS FROM db_name LIKE 'table_name';
關注欄位:
Collation:如 utf8_general_ci 表示表預設字符集為 utf8Row_format、Engine 等亦可參考SHOW FULL COLUMNS FROM table_name;
關注欄位:
Collation:欄位級字符集,如 utf8_general_ciCollation 為 NULL(不適用字符集)character_set_server) →character_set_database) →DEFAULT CHARSET) →CHARACTER SET)修改建議:
utf8mb4ALTER DATABASE、ALTER TABLE ... CONVERT TO CHARACTER SET、ALTER TABLE ... MODIFY COLUMNSET NAMES utf8mb4 或連線參數 charset=utf8mb4四層級檢查法能快速定位編碼不一致的層級,精準解決亂碼根因。