MySQL 中的 utf8 编码使用最多的是 utf8mb3,它只支持 BMP(Basic Multilingual Plane,基本多文种平面)字符集,即 Unicode 编码中的 U+0000 到 U+FFFF 范围内的字符,而不支持 Emoji 表情、一些特殊的字符和一些较新的字符(比如 U+1F600、U+1F601 等)。
为了解决这个问题,MySQL 5.5.3 版本引入了 utf8mb4 编码,它支持所有的 Unicode 字符集,包括 4 个字节的字符(比如 Emoji 表情),并且与 utf8 编码兼容。因此,使用 utf8mb4 编码可以避免存储 Emoji 表情等特殊字符时出现的异常问题。
综上,utf8mb4 编码是 utf8 编码的超集,具有更好的兼容性和扩展性。如果要在 MySQL 中存储 Emoji 表情等特殊字符,建议使用 utf8mb4 编码。