背景:
MySQL 用的 utf8编码,存储 emoji 表情报错
原因:
MySQL 的 utf8编码的一个字符最多存3个字节,而一个 emoji 表情占4个字节,所以 utf8不支持存储 emoji 表情。
解决方法1:
数据库编码集设置为 utf8mb4(数据库、表、字段),最多可存4个字节。
解决方法2:
不想修改数据库编码时,可以对 emoji 表情进行特殊处理,保存或者过滤之。可用java 的插件 emoji-java。
引入依赖:
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>java-emoji-converter</artifactId>
<version>0.0.1</version>
</dependency>
处理类:
/**
* 表情处理类
* @author Administrator
*
*/
public final class EmojiUtil {
private static EmojiConverter emojiConverter = EmojiConverter.getInstance();
/**
* 将emojiStr转为 带有表情的字符
* @param emojiStr
* @return
*/
public static String emojiConverterUnicodeStr(String emojiStr){
String result = emojiConverter.toUnicode(emojiStr);
return result;
}
/**
* 带有表情的字符串转换为编码
* @param str
* @return
*/
public static String emojiConverterToAlias(String str){
String result=emojiConverter.toAlias(str);
return result;
}
}