有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

unicode Java表情符号到xml的转换:存在哪些库?

我正在将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的其他格式


共 (1) 个答案

  1. # 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>