一、原因 UTF-8是使用1~4个字节,一种变长的编码格式,字符编码。mb4即 most bytes 4,使用4个字节来表示完整的UTF-8。 MySQL的utf8是utfmb3,只有3个字节,节省空间但不能表达全部的UTF-8。如果遇到4字节的字符比如Emoji表情,那么就会插入异常了。所以推荐使用utf8mb4。 utf8 空间占用小,一般开发足够。utf8mb4会多占用点空间,所以当有类似于存储表情需求的时候使用。 一般我们数据编码格式默认设置为utf-8, 但是utf-8并不支持表情,而表情需要utf8mb4字段(向下兼容utf-8)
二、解决办法 如果需要设置某个字段支持Emoji表情
如果需要以后该表中创建的字段默认选择的是utf8mb4
如果需要以后该数据库中创建的表默认支持utf8mb4
注意:由于本人使用的是thinkphp框架,以上设置完成以后还需要去框架中修改数据库配置文件,把utf8改成utf8mb4就可以了。
三、成果展示