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 😀awesome 😃string with a few 😉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:存在哪些库?的主要内容,如果未能解决你的问题,请参考以下文章
在 Web 上显示 iOS emoji unicode 字符
有哪些库可以在 Google App Engine/Java Servlet 上处理 XML