node.js调用系统命令,输出结果中文会乱码

node.js的超级菜鸟一只……
想在windows用child__process.exec()函数来执行一个系统命令,然后把结果在后台输出,但是中文会乱码……
源代码:

 app.post('/', function (req, res, next){
    child_process.exec('dir ' + req.params.name, function (err, data) {
        console.log(data);
        res.end('data', "UTF-8");
    });

});

我曾经在console.log(data)前面加过

 data = iconv.decode(data, 'GBK');

或者

 require('encoding').convert(data, "GBK")

都没有用,不知道这个问题怎么解决呢?

刚好我们这里也碰到同样的问题,参考了其它人的方案,一起发出来,以免继续有人踩坑

简体中文windows命令行,都使用的是CP936(近似于gb2312)编码,nodejs以utf8识别是会出问题。
可以这样处理:

var child_process = require('child_process');
var iconv = require('iconv-lite');
var encoding = 'cp936';
var binaryEncoding = 'binary';

child_process.exec('svn log', { encoding: binaryEncoding }, function(err, stdout, stderr){
    console.log(iconv.decode(new Buffer(stdout, binaryEncoding), encoding), iconv.decode(new Buffer(stderr, binaryEncoding), encoding));
});

先用binary来存储输出的文本,再用iconv来以cp936解析。

不得不说厉害,用楼上这种 解决了,谢谢大神,谢谢大神~困扰我好久了,本身都准备不弄这个乱码了,哈哈,赵大方法了

buffer不能用了,new buffer 替换成buffer.from