【问题标题】:How to convert from "unicode number" to utf16-be with javascript如何使用javascript将“unicode number”转换为utf16-be
【发布时间】:2021-10-14 15:49:15
【问题描述】:

我有一个 unicode 数字表,例如 U+1f618,它代表微笑。这个映射到一个微笑“Face Throwing a Kiss”。根据this doc,它有utf-16-be十六进制代码D8 3D DE 18,在浏览器中是\ud83d\ude18

  • 什么是“Unicode 数字”?
  • 如何使用javascript从U+1f618获取D8 3D DE 18

【问题讨论】:

  • 数字 d83d de18 是 Unicode 代码单元U+1f618 是 Unicode 代码点。当您查看 Javascript 文档时,您应该仔细检查他们使用的是哪一个(这取决于 API:旧的基于 代码单元,因此与 16 位 足够 的旧 Unicode 兼容。新函数使用代码点。Surrogates 也是一个用来描述如何将一个转换为另一个的词:en.wikipedia.org/wiki/…

标签: javascript unicode utf-8 utf-16


【解决方案1】:

无需弄乱 UTF-16 编码的内部细节,只需告诉 Javascript 你想要那个代码点:

str = String.fromCodePoint(0x1f618)
console.log(str)

如果你得到的是一个像1F618这样的十六进制字符串,你可以先把它转换成一个数字:

str = String.fromCodePoint(parseInt('1F618', 16))
console.log(str)

【讨论】:

  • 有没有办法将字符串1F618 转换为String.fromCodePoint 参数?我有一个包含 codePoint 的字符串表示形式的库。我只能想到jseval方法
  • @GiacomoCatenazzi 如何将Number('0x1f618') 传递给String.fromCharCode?它没有返回正确的信息
  • 我用过eval(`String.fromCodePoint('0x${a}')`)
  • @deathangel908:不需要评估,请参阅更新
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 2012-02-13
  • 2019-05-26
  • 2011-03-11
  • 2016-05-04
  • 2019-03-28
  • 1970-01-01
  • 2012-11-04
相关资源
最近更新 更多