解决Emoji存储MySQL报错问题

Posted walblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Emoji存储MySQL报错问题相关的知识,希望对你有一定的参考价值。

在解决之前,得先说明一下为什么会出现报错,Emoji表情占用4个字节,但是mysql数据库UTF-8编码最多只能存储3个字节,就会导致存储不进去

如何解决Emoji存储问题

mysql 的 utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。但是修改这个配置太繁琐了,容易出错,emoji-java这个库可以在代码段解决这个问题,解决思路:

  • 页面有一个表情??,在经过处理之后可以是??,将这个字符存入数据库
  • 读取的时候可以将??这个字符转为??

例如: ?? 我可以存储为:smile:,??存储为:cry:,等等,可以这样映射起来。

1、引入依赖

1 <dependency>
2      <groupId>com.vdurmont</groupId>
3      <artifactId>emoji-java</artifactId>
4     <version>3.2.0</version>
5 </dependency>

2、用法

String nikeNameTmp = resultjson.get("nickName").toString();
String nikeName = EmojiParser.parseToAliases(nikeNameTmp); //将表情符号转为字符

使用下面的两个方法就可以互相转换了:

EmojiParser.parseToAliases(string); 将表情符号转为字符

EmojiParser.parseToUnicode(string); 将字符转为表情符号

 

以上是关于解决Emoji存储MySQL报错问题的主要内容,如果未能解决你的问题,请参考以下文章

MySql数据库存储emoji表情报错解决办法

mysql存储emoji问题

MySQL存储emoji表情报错(Incorrect string value: 'xF0x9Fx98x82xF0x9F...')的解决方案

Mysql存储emoji表情报错(Incorrect string value: 'xF0x9Fx98x82xF0x9F...')的解决方案

MYSQL插入emoji报错解决方法Incorrect string value

Emoji表情符号录入MySQL数据库报错的解决方式