Ubuntu 預設安裝的 MySQL 採用 latin1 字符集,中文環境極易產生亂碼。本文提供從查看、修改到驗證的完整操作流程,確保全鏈路 UTF-8 一致性。
mysql> SHOW CHARACTER SET; mysql> SHOW VARIABLES LIKE 'character_set%';
關鍵變數說明:
character_set_server:服務端預設字符集character_set_database:當前資料庫字符集character_set_client:客戶端發送數據字符集character_set_connection:連接層字符集character_set_results:結果集返回字符集vim /etc/mysql/my.cnf # 在 [mysqld] 區段新增 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci # 可選:客戶端預設 [client] default-character-set=utf8 # 可選:mysql 命令列工具 [mysql] default-character-set=utf8
啟動 mysql-admin → 選項 Advanced → Def.CharSet 改為 utf8 → 存檔重啟。
注意:一般使用者無權修改,需 root 權限編輯 my.cnf。
/etc/init.d/mysql restart # 或 service mysql restart
mysql> SHOW VARIABLES LIKE 'character_set%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+----------------------------+
ALTER DATABASE ... CHARACTER SET utf8、ALTER TABLE ... CONVERT TO CHARACTER SET utf8。utf8mb4 完整支援 Emoji 及補充字符。collation-server=utf8_general_ci 不區分大小寫,若需嚴格排序可用 utf8_bin。characterEncoding=utf8。統一全鏈路字符集是避免亂碼的根本之道:Server → Database → Table → Column → Connection → Client,任一環節不一致皆可能導致編碼錯誤。