MySQL存储emoji表情

时间:2022-06-01 18:33:34

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,然后在存储进数据库。取出来时则需要做解码。但不推荐这样使用。建议还是升级数据库导新的版本。