mysql> SHOW VARIABLES LIKE '%character%';
關注 character_set_server、character_set_database、character_set_client、character_set_connection、character_set_results 是否均為 utf8 (或 utf8mb4)。
cp /usr/share/doc/mysql-server-5.1.52/my-large.cnf /etc/my.cnf[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'
# 5.7+ 建議改用
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
init_connect:連接建立時自動執行,確保會話層編碼一致 (超級用戶連接不觸發)。utf8mb4 支援 Emoji/補充字符,生產環境首選。service mysqld restart
mysql> SHOW VARIABLES LIKE '%character%';
即使全局配置正確,**建庫/建表若不顯式指定,仍會繼承舊預設導致亂碼**。
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE TABLE mytbl (c1 VARCHAR(100)) DEFAULT CHARSET=utf8mb4;
utf8 實為 utf8mb3,無法存 Emoji (需 4 字節);請全面遷移 utf8mb4。characterEncoding=utf8mb4 (JDBC) / charset=utf8mb4 (PHP PDO) / SET NAMES utf8mb4 (通用)。ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4; (會重建表,大表請用 pt-osc)。「配置檔全局設定 + 建庫建表顯式指定 + 連接層 SET NAMES」三位一體,徹底解決 MySQL 中文/Emoji 亂碼。新專案請直接標準化 utf8mb4。