为什么会发生这种情况:
> String.fromCharCode(0xd7FF)
''
> String.fromCharCode(0xd800)
'�'
> String.fromCharCode(0xdffe) // (and everything in between)
'�'
> String.fromCharCode(0xdfff)
'�'
> String.fromCharCode(0xe000)
''DFFF₁₆为55296₁₀。我在String.fromCodePoint()上得到了同样的结果。
发布于 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替换字符是合理的。
https://stackoverflow.com/questions/66680991
复制相似问题