Java emoji 转换为 xml:存在哪些库?

Posted

技术标签:

【中文标题】Java emoji 转换为 xml:存在哪些库?【英文标题】:Java emoji conversion to xml: what libraries exist? 【发布时间】:2013-06-12 20:18:04 【问题描述】:

我正在将 MIME 消息转换为 XML,以便可以将它们作为 SOAP 请求提交给邮件合并服务,但 Emoji 给我带来了问题(例如,the smiley ????,我想将其转换为 😃 )。

我正在使用XStream 处理我的转换,但它没有正确编码表情符号和其他高/低代理对(请参阅下面的示例测试用例)。我可能遗漏了一些关键的 xstream 配置组件。

我发现 this project 是基于 this project 的,它通过硬编码映射为特定的日本手机提供商进行转换,但我觉得这个问题在现有的 Oracle 或第三方中可能会更优雅地解决(Apache 等)库。

根据我所阅读和听到的内容,NuSOAP 为 php 解决了这个问题,但我想留在 Java/Groovy 世界中进行表情符号转换,以便我可以使用兼容的库。

您使用什么工具/方法在 JVM 上处理表情符号到 XML 的转换?

import junit.framework.TestCase;
import com.thoughtworks.xstream.XStream;

public class XStreamTest extends TestCase 
    public void testXStreamEmojiEncoding() 
        final String expected = "Open mouth smiley 😃 and two chicken heads followed by a period 🐔🐔.";
        final String original = "Open mouth smiley ???? and two chicken heads followed by a period ????????.";

        final XStream xStream = new XStream();

        final String returned = xStream.toXML(original);

        assertEquals("<string>" + expected + "</string>", returned);
    

上述测试查找表情符号的 html 十进制表示,但我会接受适用于 MIME 的其他格式。

【问题讨论】:

我看不出任何正确处理 BMP 之外字符的 XML 库在处理 Emoji 时会遇到问题(即使它们最近刚刚添加到 Unicode 中)。您能否发布一些演示该问题的代码? 只要获得一个支持 Unicode 2.0(1996 年,17 年前发布)或更晚(这里感兴趣的主要特性是 UTF-16 支持)的 XML 库。 XStream 显然没有;提交错误报告并购买新的。 另外:您为什么希望为此创建数字引用? XML 可能只是直接对值进行编码。 @eebbesen 你有没有找到解决方案?我有一个类似的问题。该死的表情符号。 @l15a 我还没有找到解决这篇文章中提出的问题的方法。根据 R.MartinhoFernandes 的 cmets,这应该由符合 Unicode 2.0 的库处理。我要求 XStream 做一些它不打算做的事情:转换。 【参考方案1】:

我最近为此写了一个库:emoji-java 这是您将获得的输出类型:

String str = "An ?awesome ?string with a few ?emojis!";
String result = EmojiParser.parseToAliases(myString);
System.out.println(myString);
// Prints:
// "An &#128512;awesome &#128515;string with a few &#128521;emojis!"

您可以将 jar 添加到您的项目中,也可以使用 maven 依赖项:

<dependency>
  <groupId>com.vdurmont<groupId>
  <artifactId>emoji-java<artifactId>
  <version>1.0.0</version> <!-- Or whatever the version will be when you read this post -->
</dependency>

【讨论】:

以上是关于Java emoji 转换为 xml:存在哪些库?的主要内容,如果未能解决你的问题,请参考以下文章

PHP转换emoji表情为HTML字符实体

在 Web 上显示 iOS emoji unicode 字符

有哪些库可以在 Google App Engine/Java Servlet 上处理 XML

Emoji表情编解码库XXL-EMOJI

Java - emoji4j 静态方法调用结束/消失/死亡而没有错误

存在哪些用于多维数据的纯 Java 库/组件?