简介
MySQL在5.5.3之后增加了utf8mb4的编码,mb4即4-Byte UTF-8 Unicode Encoding,专门用来兼容四字节的unicode。utf8mb4为utf8的超集并兼容utf8,比utf8能表示更多的字符。
utf8mb4产生背景
原来MySQL支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP Basic Multilingual Plane)。也就是说,任何不在基本多文种平面的Unicode字符,都无法使用 MySQL 的 utf8 字符集存储。比如现在流行的Emoji表情(Emoji是一种特殊的 Unicode 编码,且Emoji表情占4个字节),在移动应用项目中,会遇到ios或android用户会在文本的区域输入Emoji表情,如果对应的数据库表结构中不使用utf8mb4编码,就会导致插入数据库异常。
utf8mb4编码的使用
如果要在 MySQL中保存 4 字节长度的 UTF-8 字符,就需要使用 utf8mb4 编码,但是要注意只有 5.5.3 版本以后的MySQL才支持(查看版本命令: select version())。为了获取更好的兼容性,建议使用 utf8mb4 而非 utf8. 对于CHAR类型数据,utf8mb4会多消耗一些空间,但根据 MySQL官方建议,可以使用 VARCHAR 替代 CHAR。
ps:char是一种固定长度的类型,varchar则是一种可变长度的类型(因为varchar长度固定,方便程序的存储与查找,所以char类型存取速度优于varchar,即以空间换效率)
官方对utf8mb4编码的说明

网友评论