utf8mb4,utf8区别

网站搭建 z197 782次浏览 已收录 用手机观看

utf8
是针对Unicode的一种可变长度字符编码

utf8mb4(mb4 = most bytes 4)
utf8是utf8mb4的子集,除了将编码改为utf8mb4外不需要做其他转换

utf8mb4比utf8多了emoji编码支持

实际用途上来看,可以给要用到emoji的库或者说表,设置utf8mb4。

比如评论要支持emoji表情可以用到。

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。

当然,为了节省空间,一般情况下使用utf8也就够了。

utf8应付日常使用完全没有问题,那为什么还要使用utf8mb4呢

低版本的MySQL支持的utf8编码,最大字符长度为 3 字节,如果遇到 4 字节的字符就会出现错误了。

三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xFFFF,也就是 Unicode 中的基本多文平面(BMP)。

也就是说,任何不在基本多文平面的 Unicode字符,都无法使用MySQL原有的 utf8 字符集存储。

可以到以下的链接,看unicode编码区从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间。