博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用轻量级工具emoji-java处理emoji表情字符
阅读量:4070 次
发布时间:2019-05-25

本文共 2738 字,大约阅读时间需要 9 分钟。

原文地址:

在之前做博客,测试编辑博客和评论功能时,发现如果输入了emoji表情的话,无法插入数据库,会报错类型不匹配的错误。后来在网上找了很多解决办法,最后发现github上有个很牛逼的轻量级开源工具叫emoji-java。

github地址:https://github.com/vdurmont/emoji-java

基本使用方法在github的README文件里有说明,不过是英文的,我简单研究了一下,在这做一个简单的总结。

1. 获取maven依赖

目前该工具最新版本是4.0.0,依赖如下:

com.vdurmont
emoji-java
4.0.0

2. 使用方法

我们使用该工具类,主要用其两个功能,一是将emoji表情转换成可以存储到数据库的字符,二是取出来后,将相应的字符再转换成emoji表情给前端来展示。

2.1 将表情转换成对应别名字符(to aliases)

转换成字符别名,使用以下两种方法即可。

EmojiParser.parseToAliases(str); 直接转换

EmojiParser.parseToAliases(str, FitzpatrickAction); 带修改器的转换,修改器可以指定不同的样式

我们使用一个字符串测试一下:

Here is a boy: ??!

 

public class Test {    public static void main(String[] args) {        String str = "Here is a boy: ??!";        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: ??!";        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: ??!";        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。

转载地址:http://qhmji.baihongyu.com/

你可能感兴趣的文章
OPC客户程序(VB篇——异步)
查看>>
Data Access IDL Specification(OPC2.0规范)
查看>>
OPCError.h(OPC2.0规范)
查看>>
远程访问OPC SERVER DCOM的配置
查看>>
在工控领域用到的VC++知识(个人经验)
查看>>
OPC BROWSER ITEM程序(VB篇)
查看>>
OPC客户程序(C篇——OPC1.0,2.0规范)
查看>>
短信的两种模式(转载)
查看>>
SQL语言基础 (转自key)
查看>>
一个简单的以太网广播收发例子
查看>>
远程运维(监控)系统概念——云
查看>>
即将推出如何通过迈思德网关开发MQTT教程
查看>>
迈思德网关成功与2家云平台完成对接
查看>>
工业物联网的云端协议将以MQTT+SSL/TLS为主,协议格式以JSON为主
查看>>
bacnet ip转MQTT
查看>>
迈思德网关与百度最新版本物管理对接成功
查看>>
Spring拓展机制之BeanFactoryPostProcessor
查看>>
Spring使用技巧归纳
查看>>
RocketMQ-Broker端处理消息过程分析
查看>>
深入理解java虚拟机一:java内存区域与内存溢出
查看>>