| 字元集 | 指令 | 適用場景 |
|---|---|---|
| utf8mb4 (推薦) | CREATE DATABASE `db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; | 新專案、支援 Emoji、完整 Unicode |
| utf8 (舊版) | CREATE DATABASE `db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; | 舊系統相容、僅 BMP 字元 |
| GBK | CREATE DATABASE `db` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; | 繁簡中文舊系統、儲存空間敏感 |
SHOW CREATE DATABASE db;
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';
ALTER DATABASE `db`
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
⚠️ 僅影響**後續建立的表**,既有表需逐一轉換:
ALTER TABLE `tbl` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
skip-character-set-client-handshake # 強制忽略客戶端設定
jdbc:mysql://host:3306/db?characterEncoding=utf8mb4&useSSL=falsecharset='utf8mb4'charset=utf8mb4 in DSNcharset=utf8mb4 in DSNutf8 ≠ 真正 UTF-8,**必須用 utf8mb4** 存 EmojiCOLLATE 不一致導致 JOIN/WHERE 走不了索引--default-character-set=utf8mb4