如何显示child_process.exec返回的特殊字符?

时间:2015-08-21 02:31:33

标签: node.js encoding exec

我正在使用child_process.exec运行一个命令,在其输出中包含一些特殊字符,但这些字符总是被Node.js解释为替换字符(\uFFFD)。以下代码段应足以证明此行为:

require("child_process").exec("echo äëïöü", function(stderr, stdout) {
    console.log(stdout);
});

有什么办法可以确定输出中返回的特殊字符究竟是什么?我正在使用Windows,如果它是相关的。

1 个答案:

答案 0 :(得分:1)

exec()的默认encodingutf8。您可以通过设置encoding: 'buffer'

来覆盖此默认值并获取包含文字二进制字节的原始缓冲区
require("child_process").exec("echo äëïöü",
                              { encoding: 'buffer' },
                              function(err, stdout, stderr) {
   // `stdout` and `stderr` are Buffer instances
  console.dir(stdout);
});