解决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表情报错(Incorrect string value: 'xF0x9Fx98x82xF0x9F...')的解决方案
Mysql存储emoji表情报错(Incorrect string value: 'xF0x9Fx98x82xF0x9F...')的解决方案