java emoji 表情存储的解决方法

任飞龙
2023-12-01

背景:

    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;
  }
  
}

 

 类似资料: