必威体育Betway必威体育官网
当前位置:首页 > IT技术

使用轻量级工具emoji-java处理emoji表情字符

时间:2019-07-25 08:44:24来源:IT技术作者:seo实验室小编阅读:51次「手机版」
 

emoji表情

原文地址:http://www.itcodai.com/blog/26

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

文末福利:“程序员私房菜”,一个有温度的公众号~

程序员私房菜

相关阅读

Lena.jpg 与图像处理的渊源

作为图像处理研究人员,相信大家一定认识下面这幅图片(下载自:https://en.wikipedia.org/wiki/Lenna):\quad&ThickSpace;\;这就是Lenn

绕过障碍物处理方式

1、获取运动数据using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 运动体 ,职责:

executeBatch批量处理问题

BOSS交给了我一个任务,读取文件,将文件中的数据以“|”为分割标志,将分割出来的字段一一对应数据库里的字段插入里面。 1.前面的简单

淘宝客服咨询高峰怎么处理?客服工作时间和职责介绍!

淘宝铺客服分为两种岗位,售前和售后。不管是那种客服,对于店铺的运营都是非常的重要的,每天客服要做的事情其实挺多的,如果咨询高峰期

SSL漏洞处理

openssl相关漏洞处理 网络设备在客户的机房上线,一般都会使用扫描工具进行扫描,以查看是否存在漏洞风险,最近的项目中就出现了如下

分享到:

栏目导航

推荐阅读

热门阅读