Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Javascript nodejsutf8编码一个缓冲区,然后解码该UTF8字符串,生成一个具有不同内容的缓冲区_Javascript_Node.js_Buffer - Fatal编程技术网

Javascript nodejsutf8编码一个缓冲区,然后解码该UTF8字符串,生成一个具有不同内容的缓冲区

Javascript nodejsutf8编码一个缓冲区,然后解码该UTF8字符串,生成一个具有不同内容的缓冲区,javascript,node.js,buffer,Javascript,Node.js,Buffer,我在nodejs控制台中输入了这个 new Buffer(new Buffer([0xde]).toString('utf8'), 'utf8') 然后打印出来 <Buffer ef bf bd> 看了报纸之后 这似乎会产生一个相同的缓冲区。我从一个内容由一个字节(0xde)组成的缓冲区创建一个utf8编码的字符串,然后使用该utf8编码的字符串创建一个缓冲区。我在这里遗漏了什么吗?对于可以是多字节的编码,您不能期望在所有情况下都返回与开始时相同的字节。在的情况下,某些字符需

我在nodejs控制台中输入了这个

new Buffer(new Buffer([0xde]).toString('utf8'), 'utf8')
然后打印出来

<Buffer ef bf bd>

看了报纸之后
这似乎会产生一个相同的缓冲区。我从一个内容由一个字节(0xde)组成的缓冲区创建一个utf8编码的字符串,然后使用该utf8编码的字符串创建一个缓冲区。我在这里遗漏了什么吗?

对于可以是多字节的编码,您不能期望在所有情况下都返回与开始时相同的字节。在的情况下,某些字符需要多个字节才能正确表示


在您的示例中,
0xde
超过了
0x7f
,这是可由单个字节表示的字符的最大值。因此,当您随后调用
.toString('utf8')
时,节点会看到它只有一个字节,而是返回UTF-8字符
\uFFFD
0xef,0xbf,0xbd
,十六进制),用于表示未知/不可表示的字符。然后将这个“替换字符”值读回新的缓冲区没有问题,因为它是一个有效的UTF-8字符。

谢谢您的回答。出于我的目的,听起来我需要使用另一种类型的字符串编码选项,比如hex或base64。