节点js的Buffer.toString('binary')

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

res.download(allpath,buf0.toString('binary')); 

看价值(是一个中国字符):

 console.log(new Buffer('牛')); 

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

 var buf0=new Buffer('牛'); console.log(new Buffer(buf0.toString('binary'))); 

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

这个algorithm有什么意义,为什么使用二进制toString是工作?

实际上, new Buffer('牛')new Buffer('牛', 'utf-8')的捷径。
因此,如果你想把它转换回string,你必须使用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> 

进一步阅读:

  • 如何在Node.js中使用缓冲区