我今天发现了这个,但不明白为什么它失败了:
基本上,如果你采用一些晦涩的符号,例如
“👉”
然后在 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。
关于javascript - 为什么多次 unicode 转换 String.fromCharCode ("👉".charCodeAt(0)) 会破坏 Chrome 控制台中的符号以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37722247/