Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么符号';的unicode值不同😃';在nodejs和python中?_Python_Node.js_Unicode - Fatal编程技术网

为什么符号';的unicode值不同😃';在nodejs和python中?

为什么符号';的unicode值不同😃';在nodejs和python中?,python,node.js,unicode,Python,Node.js,Unicode,为什么符号“的unicode值是,因为JavaScript没有实现正确的unicode编码(可寻址1114112个代码点),而是UCS-2(仅可寻址65536个)。所谓的星体字符在JavaScript中编码为两个UCS-2字符;您的charCodeAt(0)仅显示其中的第一个 JavaScript中有一个新函数可以解决此问题: console.log(“从技术上讲,这不再是UCS-2,而是UTF-16,因为它包含代理字符。@DanielPryden:这是一个透视问题。底层数据的编码方式与UTF

为什么符号“的unicode值是,因为JavaScript没有实现正确的unicode编码(可寻址1114112个代码点),而是UCS-2(仅可寻址65536个)。所谓的星体字符在JavaScript中编码为两个UCS-2字符;您的
charCodeAt(0)
仅显示其中的第一个

JavaScript中有一个新函数可以解决此问题:


console.log(“从技术上讲,这不再是UCS-2,而是UTF-16,因为它包含代理字符。@DanielPryden:这是一个透视问题。底层数据的编码方式与UTF-16相同;但JavaScript将其视为UCS-2(忽略代理字符的语义),除了在显示时,以及在
代码点处
。区别与ASCII-8bit与UTF-8相同:
“\xF0\x9F\x98\x83”
在技术上与
相同我猜?关键是,表情符号和BMP之外的其他字符无法在UCS-2中表示。UCS-2作为编码格式早于它们的存在,并且无法进行改装以包含它们。创建UTF-16是为了替换UCS-2;UTF-16可以通过使用代理来包含来自其他平面的字符。如果您有一个包含代理的字符串racters,我会称之为UTF-16,而不是UCS-2。JavaScript的问题是许多API函数(不幸的是,包括
codePointAt
)尚未升级以理解UTF-16,并且必须改变字符的索引方式。@DanielPryden:你误解了我的意思。