Emoji-java使用说明

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/persistencegoing/article/details/89159946

当Emoji表情字符存储有问题,或者遇到保存字符串到数据库里出现\xF0\x9F\x92\x94等类似的问题时,可以用emoji-java来解决

     介绍与依赖 :github地址:https://github.com/vdurmont/emoji-java

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

1. 获取maven依赖
目前该工具最新版本是4.0.0,依赖如下:

<dependency>
  <groupId>com.vdurmont</groupId>
  <artifactId>emoji-java</artifactId>
  <version>4.0.0</version>
</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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值