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。
技术类文章一般都有时效性,我会不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

posted on 2023-09-15 10:38  沟通反思总结  阅读(641)  评论(0)    收藏  举报