在 Mac 上使用 MySQL 時,中文資料插入後顯示亂碼是常見問題。花費數小時測試後,終於找到根本原因並徹底解決。亂碼本質上是編碼不一致導致,只要統一所有層級的字元集為 UTF-8 即可。
進入 MySQL 命令列,執行以下指令查看所有字元集變數:
SHOW VARIABLES LIKE 'character_set_%';
確認輸出結果中所有項目均為 utf8(或 utf8mb4):
若全部為 utf8,則無需進一步設定;若有不同值,請繼續下列步驟。
sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
/etc/my.cnf:
cp /usr/local/mysql/support-files/*.cnf /etc/my.cnf
/etc/my.cnf,在對應區段加入以下配置:
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
提示: 建議新專案直接使用 utf8mb4 以完整支援 Emoji 等四位元組字元。