tutujo 2015-02-19 05:30 采纳率: 0%
浏览 11598

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 03: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 python使用GPU报错
  • ¥15 vscode无法debug
  • ¥15 基于visual studio2012和物联网行业实训仿真软件设计一个传感器获取温湿度数值在界面展现,根据设定的阈值自动控制风扇等执行器开闭和手动模式开闭风扇
  • ¥15 yolov8的矩形检测框变成圆形检测框
  • ¥15 Codesys配置ethercat错误
  • ¥15 通过非官方api调用的大语言模型都是不能联网的吗
  • ¥15 mstsc远程桌面轮流掉线
  • ¥15 求一下oivio数据集
  • ¥15 android开发百度网盘文件浏览功能,是什么做的?用的什么技术实现?
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部