Java MySQL数据库 emoji表情保存乱码的两个解决方案(已解决)
1 场景
小程序端的售后评价,或者商家后台的商品评价等。这些功能都有把emoji表情保存到数据库。
解决问题前,项目里用的数据库是MySQL,字符集是utf8。
2 为什么往MySQL保存emoji代码出错?
emoji表情用的是Unicode字符,占4个字节。而utf8编码最大字符长度为3字节,所以插入数据时报了异常。
3 解决方案
3.1 方案一:解决保存emoji数据到数据库报错
3.1.1 解决办法
于是修改MySQL的字符集为utf8mb4

3.2 方案二:使用com.vdurmont依赖处理emoji字符
3.2.1 依赖
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>5.1.1</version>
</dependency>
只加依赖就可以了,不需要改配置文件里的其他东西。
3.2.2 保存到数据库前,把emoji表情对应的字符转成字符串
//思路:把unicode字符转成字符串后,保存到数据库
//使用方法:EmojiParser.parseToAliases()
String t = "\uD83D\uDE04";
System.out.println(EmojiParser.parseToAliases(t)); //:smile:
3.2.3 把从数据库拿到的emoji字符串转成unicode字符后,再返回到接口上
//思路:把从数据库里拿到的字符串转成unicode,返回到接口上
//使用方法:EmojiParser.parseToUnicode()
String s = ":smile:";
System.out.println(EmojiParser.parseToUnicode(s)); //😄
注:本站所有文章均为原创,欢迎转载,请注明文章出处:https://www.cnblogs.com/DXJ1264688396/articles/17704362.html。
技术类文章一般都有时效性,我会不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
浙公网安备 33010602011771号