Node.js 节点js';s Buffer.toString(';二进制';)

Node.js 节点js';s Buffer.toString(';二进制';),node.js,express,buffer,encode,Node.js,Express,Buffer,Encode,虽然缓冲区的“二进制”已被弃用,但我必须使用它: 我使用NodeJS+express编写了一个web应用程序。用户可以下载文件,如果不使用,文件名将被篡改 res.download(allpath,buf0.toString('binary')); 观察值(是中文字符): 输出:缓冲器,e7,89,9b 及 输出:缓冲器,c3,a7,c2,89,c2,9b 这个算法意味着什么?为什么使用二进制字符串是有效的?实际上,新的缓冲区('牛')是新缓冲区的快捷方式牛', 'utf-8') 因此,如果

虽然缓冲区的“二进制”已被弃用,但我必须使用它: 我使用NodeJS+express编写了一个web应用程序。用户可以下载文件,如果不使用,文件名将被篡改

 res.download(allpath,buf0.toString('binary'));
观察值(是中文字符):

输出:缓冲器,e7,89,9b

输出:缓冲器,c3,a7,c2,89,c2,9b

这个算法意味着什么?为什么使用二进制字符串是有效的?

实际上,
新的缓冲区('牛')是新缓冲区的快捷方式牛', 'utf-8')

因此,如果要将其转换回字符串,必须使用
toString('utf-8')

例如:

console.log(new Buffer('牛'));
// Output: <Buffer e7 89 9b>

var buf0=new Buffer('牛');
console.log(new Buffer(buf0.toString('utf-8')));
// Output: <Buffer e7 89 9b>
console.log(新缓冲区('牛'));
//输出:
var buf0=新缓冲区('牛');
日志(新的缓冲区(buf0.toString('utf-8'));
//输出:
进一步阅读:


我的意思是:var buf0=新缓冲区('牛'); Res.download(allpath,buf0.toString('utf-8'))不正常(在浏览器中为乱码),Var buf0=new Buffer('utf-8')牛'); res.download(allpath,buf0.toString('binary')是正常的。但是为什么呢?utf-8是如何变为二进制的?你能提供一堆有意义错误的代码吗?我不确定我是否理解你真正的问题。
var buf0=new Buffer('牛');
console.log(new Buffer(buf0.toString('binary')));
console.log(new Buffer('牛'));
// Output: <Buffer e7 89 9b>

var buf0=new Buffer('牛');
console.log(new Buffer(buf0.toString('utf-8')));
// Output: <Buffer e7 89 9b>