Java表情转换为XML:有哪些库可用?

8
我正在将MIME消æ�¯è½¬æ�¢ä¸ºXML,以便将它们作为SOAP请求æ��交到邮件å�ˆå¹¶æœ�务,但是表情符å�·ä¼šç»™æˆ‘带æ�¥é—®é¢˜ï¼ˆä¾‹å¦‚笑脸😃,我想将其转æ�¢ä¸º😃)。
我正在使用XStream�处�我的转�,但它�能正确编�表情符�和其他高/�代�对(请��下�的示例测试用例)。我�能缺少一些关键的xstream�置组件。
我��了这个项目,它基�这个项目,通过硬编�映射为特定的日本手机�供商进行转�,但我觉得这个问题�能已�在�有的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。

1
只需获取一个支持Unicode 2.0(于1996年发布,已有17年历史)或更高版本的XML库(此处主要关注的特性是UTF-16支持)。XStream显然不支持;提交错误报告并寻找新的库。 - R. Martinho Fernandes
你的 expected 包含 "两只鸡",而你的 original 包含 "两个鸡头"。 - Joachim Sauer
1
另外,为什么您希望为此创建数字引用?XML 可以直接编码值。 - Joachim Sauer
1
@eebbesen,你有没有找到解决办法?我也遇到了类似的问题。该死的表情符号。 - l15a
1
@l15a 我还没有找到这篇帖子中提出的问题的解决方案。根据R.MartinhoFernandes的评论,这应该由符合Unicode 2.0标准的库来处理。我要求XStream做一些它并不设计做的事情:转换。 - eebbesen
显示剩余3条评论
1个回答

6

我最近写了一个库来处理这个问题: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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接