首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么String.fromCharCode(0xd800)返回替换字符String.fromCharCode(0xdfff)?

为什么String.fromCharCode(0xd800)返回替换字符String.fromCharCode(0xdfff)?
EN

Stack Overflow用户
提问于 2021-03-17 20:48:10
回答 1查看 237关注 0票数 0

为什么会发生这种情况:

代码语言:javascript
复制
> String.fromCharCode(0xd7FF)
'퟿'
> String.fromCharCode(0xd800)
'�'
> String.fromCharCode(0xdffe) // (and everything in between)
'�'
> String.fromCharCode(0xdfff)
'�'
> String.fromCharCode(0xe000)
''

DFFF₁₆为55296₁₀。我在String.fromCodePoint()上得到了同样的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 20:53:34

代码点U+D800到U+DFFF是为代孕的UTF-16编码保留的.实际上,这些字符从来都不是单独有效的--它们总是以代理项对的形式出现--一个高的代理项,然后是一个低的代理项。(令人困惑的是,“高代理项”范围是范围U+D800到U+DBFF,“低代理项”范围是范围U+DC00到U+DFFF。)

这一对字符在UTF-16中组合,以表示基本多语言平面之外的单个字符。

在UTF-16的这个特殊意义之外,这些字符是无效的.因此,String.fromCharCode说“您没有提供有效的字符串数据”并使用Unicode替换字符是合理的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66680991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档