java emoji表情处理
原文地址:https://blog.csdn.net/eson_15/article/details/81953720
在之前做博客,测试编辑博客和评论功能时,发现如果输入了emoji表情的话,无法插入数据库,会报错类型不匹配的错误。后来在网上找了很多解决办法,最后发现github上有个很牛逼的轻量级开源工具叫emoji-java。
github地址:https://github.com/vdurmont/emoji-java
基本使用方法在github的README文件里有说明,不过是英文的,我简单研究了一下,在这做一个简单的总结。
1. 获取maven依赖
目前该工具最新版本是4.0.0,依赖如下:
<dependency><groupId>com.vdurmontgroupId><artifactId>emoji-javaartifactId><version>4.0.0version>
dependency>
2. 使用方法
我们使用该工具类,主要用其两个功能,一是将emoji表情转换成可以存储到数据库的字符,二是取出来后,将相应的字符再转换成emoji表情给前端来展示。
2.1 将表情转换成对应别名字符(to aliases)
转换成字符别名,使用以下两种方法即可。
EmojiParser.parseToAliases(str); 直接转换
EmojiParser.parseToAliases(str, FitzpatrickAction); 带修改器的转换,修改器可以指定不同的样式
我们使用一个字符串测试一下:
Here is a boy: :boy|type_6:!
public class Test {public static void main(String[] args) {String str = "Here is a boy: :boy|type_6:!";System.out.println("原始字符为:\n" + str);System.out.println("to aliases 之后:");System.out.println(EmojiParser.parseToAliases(str));System.out.println(EmojiParser.parseToAliases(str, EmojiParser.FitzpatrickAction.PARSE));System.out.println(EmojiParser.parseToAliases(str, EmojiParser.FitzpatrickAction.REMOVE));System.out.println(EmojiParser.parseToAliases(str, EmojiParser.FitzpatrickAction.IGNORE));}
}
打印出的结果为:

2.2 将表情转换成html(to html)
转换成html,可以使用如下,后者为十六进制的表现方式。
EmojiParser.parseToHtmlDecimal(str); 直接转换
EmojiParser.parseToHtmlHexadecimal(str); 直接转换(十六进制)
EmojiParser.parseToHtmlDecimal(str, FitzpatrickAction); 带修改器的转换
我们还使用上面字符串测试一下:
public class Test {public static void main(String[] args) {String str = "Here is a boy: :boy|type_6:!";System.out.println("原始字符为:\n" + str);System.out.println("to html:");System.out.println(EmojiParser.parseToHtmlDecimal(str));System.out.println(EmojiParser.parseToHtmlDecimal(str, EmojiParser.FitzpatrickAction.PARSE));System.out.println(EmojiParser.parseToHtmlDecimal(str, EmojiParser.FitzpatrickAction.REMOVE));System.out.println(EmojiParser.parseToHtmlDecimal(str, EmojiParser.FitzpatrickAction.IGNORE));System.out.println("to html(hex):");System.out.println(EmojiParser.parseToHtmlHexadecimal(str));}
}
打印出的结果可以自己测试一下。
2.3 再次转换回表情
经过转换之后的字符就可以存到数据库了, 那么从数据库中取出来后,将字符还原成emoji表情使用如下方法即可。
EmojiParser.parseToUnicode(str);
public class Test {public static void main(String[] args) {String str = "Here is a boy: :boy|type_6:!";System.out.println("原始字符为:\n" + str);System.out.println("to html:");String s = EmojiParser.parseToHtmlDecimal(str);System.out.println(s);System.out.println("还原:");System.out.println(EmojiParser.parseToUnicode(s));}
}
打印出结果可以自己测试一下。
当然了,这个工具还有其他方法,比如去除所有emoji表情,获取所有emoji表情等等,具体的可以看一下github上的README文档。
不过这个工具还有个问题,如果是用markdown编辑的,在代码块内部出现emoji表情的话,我测试过是转换不了的。所以该工具还需要作者进一步优化,回头我去给他们提个issue。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
