【问题标题】:Display unicode characters (emojies) in Javascript在 Javascript 中显示 unicode 字符(表情符号)
【发布时间】:2015-05-09 14:28:29
【问题描述】:

我有一个数据库,其中包含诸如“\U0001f374 午餐。有很多肉...”之类的推文——也就是说,表情符号表示为 unicode(\U0001f374 是刀叉表情符号)。在我的 Web 应用程序中,我使用 Ajax 请求获取推文并希望显示它们。

没什么大不了的,到目前为止,我已经启动并运行了它,我可以使用 unicode 显示“原始”推文字符串。但是,我喜欢渲染表情符号。我怎样才能在 Javascript 中做到这一点?

【问题讨论】:

  • 使用一些 emoji 库将 unicode 转换为 emojies github.com/twitter/twemoji
  • 如果我理解正确,这个库用图像替换 unicode 字符串。虽然从长远来看我可能想这样做,但目前我会使用浏览器的原生渲染。
  • 是的,还有其他库也使用原生渲染,我只给你一个这样的库的例子。
  • 您的意思是在浏览器中渲染字符 U+1F374 时遇到问题? (即字体问题)......或者你的意思是你在数据库内容中有一个反斜杠和一个大写U?这不是标准的转义格式,因此如果是这种情况,您将需要查看获取推文并将其放入数据库的脚本。它正在执行一些可能出错的临时编码。
  • 如果您有 UTF-8 字符串作为表情符号怎么办?如何在 JavaScript 中将其输出为变量或文字?

标签: javascript unicode utf-8 utf-16


【解决方案1】:

由于 \U0001f374 之类的符号在 JavaScript 中是未定义的,因此您需要使用自己的代码(或合适的库代码)从中构造字符。您可以从字符串中解析 Unicode 数字并将其转换为一对代理代码点。

但是,如果您在 HTML(或 XML)上下文中使用 JavaScript,则可以让 HTML(或 XML)解析器完成这项工作。只需将字符串(假设有 8 个十六进制数字)更改为 HTML 或 XML 字符引用,并确保将结果解析为标记:

var sample = document.getElementById('in').value;
sample = sample.replace(/\\U([0-9a-f]{8})/gi, "&#x$1;");
document.getElementById('demo').innerHTML = sample;
<input id=in size=40
       value="\U0001f374 Lunch. Had loads of meat...">
<div id=demo>To be replaced</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-07
    • 2020-06-23
    • 2021-11-07
    • 2019-05-20
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多