java 替换emoji表情字符串

匿名 (未验证) 提交于 2019-12-02 21:35:18

问题:用户发送的emoji表情,直接存入数据库,会出现java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8E\xF0\x9F…’ for…

原因:emoji表情是utf-8编码,但是占用4个字节,而mysql的utf-8字符集的数据库每个字符只有3个字节,所以无法保存emoji表情到mysql数据库。

一、采用正则替换

 public static String filterEmoji(String source) {           if(source != null)          {              Pattern emoji = Pattern.compile ("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",Pattern.UNICODE_CASE | Pattern . CASE_INSENSITIVE ) ;              Matcher emojiMatcher = emoji.matcher(source);              if ( emojiMatcher.find())              {                  source = emojiMatcher.replaceAll("*");                  return source ;              }          return source;         }         return source;       }

二、通过第三方jar包来转换emoji表情,加入maven依赖:

 <dependency>   <groupId>com.github.binarywang</groupId>   <artifactId>java-emoji-converter</artifactId>   <version>0.1.1</version> </dependency> 

代码中,对聊天的内容进行转义:

 private EmojiConverter emojiConverter = EmojiConverter.getInstance(); emojiConverter.toAlias(data.getMsgContent());//将聊天内容进行转义 

文章来源: https://blog.csdn.net/xiaogezq0/article/details/90234008
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!