✅ utf8mb3 vs utf8mb4 对比
| 项目 |
utf8mb3 |
utf8mb4 |
| 字节长度 |
最多 3 字节 |
最多 4 字节 |
| Unicode 支持范围 |
支持基本多文种平面(BMP) |
支持所有 Unicode 字符(含 Emoji、特殊符号) |
| 是否支持 Emoji |
❌ 不支持 |
✅ 完整支持 |
| 是否为官方推荐 |
❌ MySQL 8 开始不推荐使用 |
✅ MySQL 8 默认字符集 |
| 向后兼容性 |
✅ 可用于旧系统 |
✅ 完全兼容 utf8mb3 的字符 |
| 向前兼容性 |
❌ 不支持 utf8mb4 中 4 字节字符 |
✅ 完整支持旧 utf8mb3 内容 |
| 常见错误 |
Incorrect string value |
很少出错(除非插入非法字符) |
| MySQL 使用情况 |
老版本(≤ 5.7)默认字符集 |
新版本(≥ 8.0)默认字符集 |
| 实际用途建议 |
仅限旧项目维持 |
所有新项目统一使用 |
✅ utf8mb4推荐使用
| Collation |
含义解释 |
utf8mb4_0900_ai_ci |
默认推荐 ✅:不区分大小写、不区分重音,MySQL 8+ 默认 |
utf8mb4_0900_as_cs |
区分大小写 & 区分重音,适合严格匹配需求 |
utf8mb4_unicode_520_ci |
基于 Unicode 5.2 的 Unicode 规则,兼容性更好 |
utf8mb4_unicode_ci |
基于 Unicode 4.0 的旧版规则,已逐步被替代 |
📌 推荐选择场景
| 使用场景 |
推荐 Collation |
原因 |
| 通用系统(电商、博客等) |
utf8mb4_0900_ai_ci |
兼顾性能与准确性,支持 Emoji 和多语言 |
| 要严格区分大小写 |
utf8mb4_0900_as_cs |
比如用户名、文件路径、密码等需区分场景 |
| 老系统升级 |
utf8mb4_unicode_520_ci |
Unicode 5.2,修复了部分 unicode_ci 的问题 |
| 国际化多语言应用 |
utf8mb4_0900_ai_ci |
全面支持重音、德语 ß、希腊语、俄语等字符 |
| 数据库全文索引/搜索优化 |
utf8mb4_0900_ai_ci |
通用语义排序友好,查询性能较好 |
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~