MySQL 5.5.3 引入 utf8mb4,mb4 = most bytes 4,專為 4 字節 Unicode 字符設計。utf8mb4 是 utf8 的超集,遷移無需數據轉換,僅改字符集。
utf8 別名 utf8mb3,最大 3 字節/字符,覆蓋 Unicode BMP(基本多文種平面,0x0000–0xFFFF)。0xFFFF),需 4 字節,utf8 直接報錯或截斷。早期 Unicode 認為 65535 字符足夠,MySQL 為了 CHAR(N) 固定長度計算(3×N 字節),將 utf8 限制為 3 字節。後來 Unicode 擴展,MySQL 為兼容舊表結構不改 utf8,另推 utf8mb4。
utf8mb4,獲得完整 Unicode 支持。CHAR 類型會預分配 4×N 字節,建議改用 VARCHAR 節省空間。ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;(含索引重建,大表慎重)。SET NAMES utf8mb4 或驅動屬性 characterEncoding=utf8mb4。utf8mb4 = 真正的 UTF-8,utf8 = 截斷版 UTF-8。為兼容 Emoji、生僻字、未來擴展,請始終選擇 utf8mb4。