Java MySQL数据库 emoji表情保存乱码的两个解决方案(已解决)

本文探讨了在小程序中使用MySQL数据库存储emoji表情时遇到的字符集限制问题,提供了两种解决方案:一是修改MySQL字符集为utf8mb4;二是引入com.vdurmont/emoji-java库进行字符转换。
摘要由CSDN通过智能技术生成

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://blog.csdn.net/s__lion/article/details/132832764。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值