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

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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀