答:3个
MySQL官方手册中对于utf8mb4的解释是
现有数据库版本默认的utf8都为utf8mb3,注意其中所说的"相同的长度"。
所以在utf8mb4下,英文占用1个字节,一般汉字占3个字节,emoji表情占4个字节。应当与varchar的字符数概念区分开,使用 select 字段,length(字段),char_length(字段) from 表
进行测试即可。
关于代码插入emoji表情报错,请检查 表编码 和 数据库连接 编码是否同时为utf8mb4。
结论:数据库和表都设置为utf8mb4 不会影响数据的存储空间(但是varchar字段索引每字符横为4字节,具体请观察explain中ken_len),且有很好的兼容性。