场景:数据库字符集类型设置为UTF8,数据表字符集类型设置为UTF8,某个字段是字符串类型;当该字段输入的字符串中带有表情,如😊
问题原因:
1、mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。
问题解决办法:
1、修改数据库的字符集类型或者数据表的字符集类型为utf8mb4;
2、转译:
1)使用emoji-java maven依赖包中的
EmojiParser
类进行存取转译;
2)对字符串进行base64编码转译;