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

How can I display special characters returned by child_process.exec?

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

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

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

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

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