【问题标题】:How to convert UTF16 (emoji) to HTML Entity (hex) using java如何使用 java 将 UTF16 (emoji) 转换为 HTML Entity (hex)
【发布时间】:2016-05-04 02:32:28
【问题描述】:
How to convert UTF16 (emoji) to HTML Entity (hex) using java


I have the string from DB like this "\uD83D\uDE02". 
I try to display this unicode emoji, it displays as ��. 
I search in google to convert UTF16 to Html hex code. But i didnt get any solution. Please help me

我会将这个 unicode 显示给 Emoji 笑脸图标

【问题讨论】:

标签: java html jsp emoji emoticons


【解决方案1】:

虽然字符串似乎包含两个 Unicode 字符,但它已经是一个以 UTF-16 编码的字符,这就是 Java 字符串的工作方式。您可以使用String.codePointAt 方法确定实际的 UTF-16 解码字符代码。这里字符的代码是0x1F602,也就是Unicode'FACE WITH TEARS OF JOY':?

将字符写入 HTML:

选项 1:生成 HTML 转义实体

String str="\uD83D\uDE02";
FileWriter w=new FileWriter("c:\\temp\\emoji.html");
w.write("<html><body>");
w.write("&#x"+Long.toHexString(str.codePointAt(0))+";");
w.write("</body></html>");
w.close();

这会产生

<html><body>&#x1f602;</body></html>

选项 2:使用一些支持 Unicode 的 HTML 编码,例如 UTF-8

String str="\uD83D\uDE02";
OutputStreamWriter w=new OutputStreamWriter(new FileOutputStream("c:\\temp\\emoji.html"),"UTF-8");
w.write("<html>\n<head><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head>\n<body>");
w.write(str);
w.write("</body></html>");
w.close();

这会产生

<html>
<head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head>
<body>рџ‚</body></html>

这是用 UTF-8 编码的同一张笑脸。

【讨论】:

  • 我的实际字符串看起来像“嗨,我很好\uD83D\uDE02 \uD83D\uDE02,你好吗?”。它结合了聊天内容和表情符号图标
  • @chakri,要使用选项 1 转换整个字符串,您必须使用循环遍历所有 代码点(不是 字符)在字符串中。只为字符 >=128 生成转义实体并按原样写入字符
【解决方案2】:

您可以为此使用emoji4j 库。

例如:

String line = "Hi , i am fine \uD83D\uDE02 \uD83D\uDE02, how r u ?";

EmojiUtils.hexHtmlify(line); //Hi , i am fine &#x1f602; &#x1f602;, how r u ?

【讨论】:

  • 它在上面的例子中工作正常但是如果字符串是“”,它会抛出一个错误,它将如何处理?
  • 从 v4.0 开始,该库仅支持处理十进制和十六进制 html 实体。我刚刚检查了更改并发布了 v5.0,它能够处理代理十进制实体。有关更多示例,请参阅单元测试。试用新版本,如果发现任何问题,请随时打开问题。
猜你喜欢
  • 2021-08-16
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 2017-01-06
  • 2021-10-14
  • 1970-01-01
  • 2012-05-20
相关资源
最近更新 更多