emoji编码为unicode占用4个字节,如果MySQL字符编码为utf8,存储emoji会报错:
Incorrect string value: '\xF0\x9F\x98\x84' for column 'content' at row
解决方法
MySQL >=5.5.3
把存储含有emoji表情的字符串编码改为utf8mb4
修改单个字段的编码方式
ALTER TABLE mytable MODIFY COLUMN content VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
MySQL < 5.5.3
对于不支持4个字节的存储,我们可以对emoji表情做转码,如转为base64,然后在存储进数据库。取出来时则需要做解码。但不推荐这样使用。建议还是升级数据库导新的版本。