java处理emoji表情的方法

最近项目中遇到emoji表情存储的问题,后来就在网上搜了很多,
总结出两种方法进行处理:
1.通过正则匹配进行过滤,代码如下:
 //emoji表情过滤
	    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; 
	     }
2.通过修改数据库编码进行存储,最好在创建数据库的时候就采用该编码:
好多都说把mysql数据库字符集编码改成utf8mb4_unicode_ci,改完之后存储的emoji表情是4个问号,后来接着上网查,发现了通过引入emoji-java的jar方式来处理emoji表情,下面是两段转换代码: //把含有emoji表情的字符串中的emoji表情转成相应的alias String result = EmojiParser.parseToAliases(name); //把取得的别名转成对应的emoji表情 name = EmojiParser.parseToUnicode(name); 具体参考:https://github.com/vdurmont/emoji-java 上面的方法虽然可以用,但是需要比对jar包中的表情库,所系速度上相对来说较慢,后来我又继续研究上面 通过修改数据库编码的方式来解决,最后通过配置my.ini文件,把数据库编码格式修改成以下格式后就可以了, 原来出现乱码是因为我的character_set_server格式是latin1,改成utf8mb4后就可以了,可以看下成功的截图:
java处理emoji表情的方法_第1张图片
 表字段:
java处理emoji表情的方法_第2张图片
 表引擎:
java处理emoji表情的方法_第3张图片
 数据库:
java处理emoji表情的方法_第4张图片
数据:
 不用管数据库中存的是乱码,取出来的环境支持emoji时就会显示出来。

 
java处理emoji表情的方法_第5张图片
 

你可能感兴趣的:(mysql,java)