让MySQL支持emoji图标存储

在做数据同步的时候报错,发现出错的数据上带有emoji图标
微信截图_20190619102609.png

经过查询资料后得知,MYSQL 5.5 之前, UTF8 编码只支持1-3个字节。而emoji图标恰好是4个字节的编码进行存储,从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,所以能支持更多的字符集。所以要解决问题,必需把数据库表字符编码全部改成utf8mb4即可解决问题。

如果使用的是thinkphp开源框架,数据库文件中的charset也需同步改成utf8mb4

// 数据库编码默认采用utf8
'charset'         => 'utf8mb4',