一、示例
深圳市福田区福华路318号福𠓾苑
深圳市福田区福华路318号福鑫苑
𠓾
11011000 01000001 11011100 11111110
鑫
10010100 01101011
字符串为Emoj表情内容,还有一些生僻字,每个字符占用4个字节,在Mysql中默认最大支持3个字节,超长了,所以报错了。
MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。
在utf8mb4字符集下,字符串的char类型会多消耗一些空间,根据 Mysql官方建议,使用varchar代替char类型。
Emoji是一种特殊的Unicode编码,常见于ios和 android 手机上,和一些不常用的汉字,以及任何新增的 Unicode 字符等等。如果版本支持(MySQL5.5.3及以上),为了获得更好的兼容性,建议使用utf8mb4字符集。
二、结论
常规管理系统,使用utf8字符集即可,节约空间。但如果数据来自移动端,有兼容性要求的。强烈建议使用utf8mb4字符集。采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。
create database sina default character set utf8mb4 collate utf8mb4_unicode_ci;
评论