Node.js 节点缓冲区,从utf8到二进制

Node.js 节点缓冲区,从utf8到二进制,node.js,encoding,utf-8,buffer,Node.js,Encoding,Utf 8,Buffer,我从一个源中以utf8的形式接收数据,该数据最初是二进制格式的(它是一个缓冲区)。我必须将此数据转换回一个缓冲区。我很难想出怎么做 下面是一个小示例,它显示了我的问题: var hexString = 'e61b08020304e61c09020304e61d0a020304e61e65'; var buffer1 = new Buffer(hexString, 'hex'); var str = buffer1.toString('utf8'); var buffer2 = new Buff

我从一个源中以
utf8
的形式接收数据,该数据最初是二进制格式的(它是一个
缓冲区
)。我必须将此数据转换回一个
缓冲区
。我很难想出怎么做

下面是一个小示例,它显示了我的问题:

var hexString = 'e61b08020304e61c09020304e61d0a020304e61e65';
var buffer1 = new Buffer(hexString, 'hex');

var str = buffer1.toString('utf8');
var buffer2 = new Buffer(str, 'utf8');

console.log('original content:', hexString);
console.log('buffer1 contains:', buffer1.toString('hex'));
console.log('buffer2 contains:', buffer2.toString('hex'));
印刷品

original content: e61b08020304e61c09020304e61d0a020304e61e65
buffer1 contains: e61b08020304e61c09020304e61d0a020304e61e65
buffer2 contains: efbfbd1b08020304efbfbd1c09020304efbfbd1d0a020304efbfbd1e65
在这里,我希望
buffer2
buffer1
完全相同


如何将
utf8
字符串转换为其原始二进制
缓冲区

由于utf8的工作方式(特别是当无效的utf8字符被
\ufffd
替换时),您不能期望转换为utf8并再次转换回的二进制数据与原始二进制数据相同


您必须使用另一种正确保存数据的格式。这可以是“十六进制”、“base64”、“二进制”或第三方模块提供的其他二进制安全格式。显然,如果可以的话,您可能应该将其保留为缓冲区。

避免使用十六进制,尝试在源代码处使用base64.encode(),然后在node.js处使用base64.decode()。例如:“æ”是U+00e6(unicode),但读作“195166”(utf8)。
new Buffer()
不推荐使用。现在这些都是类方法,请看关于utf-8的文档在哪里?谢谢是的,我读了一些utf-8文档和规范,它改变了流!谢谢大家!@MikeGleasonjrCouturier关于utf-8的文件在哪里?谢谢