javascript - 为什么多次 unicode 转换 String.fromCharCode ("👉".charCodeAt(0)) 会破坏 Chrome 控制台中的符号以及如何修复它?

标签 javascript google-chrome unicode fonts character-encoding

我今天发现了这个,但不明白为什么它失败了:

基本上,如果你采用一些晦涩的符号,例如

“👉” 然后在 Chrome 控制台中输入 "👉".charCodeAt(0) - 您将得到代码 55357,但是当您使用 String.fromCharCode(55357) 恢复操作时 它产生 "�"

即使我这样做 String.fromCharCode("👉".charCodeAt(0)) 它也会产生 "�" 但是 String.fromCharCode( "👉".charCodeAt(0)).charCodeAt(0) 仍然是 55357,因此信息不会丢失,这意味着 Chrome 无法找到正确的符号映射到 55357

为什么 Chrome 无法正确表示符号?是因为它无法正确地将其映射到字体吗?如何进行双重转换再次显示为 "👉"

最佳答案

如果您登录

"👉".length

你会得到2,即字符串实际上包含2个字符,而不是1个。这是因为 JS 仅支持 16 位 unicode (BMP),并使用“代理对”对“星体平面”符号进行编码。您的符号在内部是 \uD83D\uDC49 ,当您执行 .charCodeAt(0) 时,您只能得到 \uD83D,这是无效的 unicode。

更多关于https://mathiasbynens.be/notes/javascript-unicode

关于javascript - 为什么多次 unicode 转换 String.fromCharCode ("👉".charCodeAt(0)) 会破坏 Chrome 控制台中的符号以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37722247/

相关文章:

.net - 我应该在 dllimport 中使用 Ansi 还是 Unicode 字符集?

Java 读取文件获得了领先的 BOM [  ]

javascript - 如何在 Mongoose/Mongodb 中创建查询以获取此 json?

MySQL UTF 文本容量

javascript - 从数据属性获取数据

java - Chrome 正在被自动化测试软件控制

Javascript:如何查看 toString 等 native 函数的源代码实现

css - 使用百分比值填充 flexbox 元素

javascript - 具有相同脚本的多个模式

javascript - 将监听器添加到 firebase 生成的 key 内的子级?