tutujo 2015-02-19 13:30 采纳率: 0%
浏览 11571

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")

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

  • 写回答

3条回答 默认 最新

  • cyrilluce 2015-06-15 11:45
    关注

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

    简体中文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解析。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题