Javascript 为什么长度为3的字符串的字节长度为3?
何时,为什么会出现以下情况:Javascript 为什么长度为3的字符串的字节长度为3?,javascript,node.js,byte,buffer,Javascript,Node.js,Byte,Buffer,何时,为什么会出现以下情况: Buffer.from("abc").byteLength 输出3?它不应该是6 Javascript类缓冲区的默认编码是“utf-8”。可以看到,在utf-8编码中,ASCII字符占用1个字节。所以结果应该是3。注意:Utf-8编码一个字符可能需要1~3个字节。我认为默认编码是Utf-8,如果是这样,那么每个字符至少需要8个字节。一个可能对你有更多帮助的链接。“那些神奇的U+数字,在内存中使用8位字节。在UTF-8中,0-127之间的每个代码点都存储在一个字节中
Buffer.from("abc").byteLength
输出
3
?它不应该是6
Javascript类缓冲区的默认编码是“utf-8”。可以看到,在utf-8编码中,ASCII字符占用1个字节。所以结果应该是3。注意:Utf-8编码一个字符可能需要1~3个字节。我认为默认编码是Utf-8,如果是这样,那么每个字符至少需要8个字节。一个可能对你有更多帮助的链接。“那些神奇的U+数字,在内存中使用8位字节。在UTF-8中,0-127之间的每个代码点都存储在一个字节中。只有128及以上的代码点使用2、3存储,实际上最多使用6个字节。”如果您指的是数组的from()方法和ArrayBuffer的ByTeleLength属性,然后我认为解释是,3个条目是从一个包含3个字符的字符串创建的,因为3个字符的字符串的长度是3(3个代码单位)。如果ArrayBuffer是Uint8Array,则为“abc”创建3个字节。如果改用Uint16Array,则从“abc”创建6个字节。试用警报(新Uint8Array(Array.from(“sss”)).ByTeleLength)与警报(新Uint16Array(Array.from(“sss”).ByTeleLength)