gpt4 book ai didi

windows - 在 Windows 下使用 child_process spawn 或 exec 时编码错误

转载 作者:可可西里 更新时间:2023-11-01 13:47:01 38 4
gpt4 key购买 nike

在 Windows CMD 中使用 dir 命令将产生以下输出:

Verzeichnis von D:\workspace\filewalker

22.12.2013 17:27 <DIR> .
22.12.2013 17:27 <DIR> ..
22.12.2013 17:48 392 test.js
22.12.2013 17:23 0 testöäüÄÖÜ.txt
22.12.2013 17:27 <DIR> testÖÄÜöüäß
2 Datei(en), 392 Bytes
3 Verzeichnis(se), 273.731.170.304 Bytes frei

使用 execspawn 将产生以下结果:

Verzeichnis von D:\workspace\filewalker

22.12.2013 17:27 <DIR> .
22.12.2013 17:27 <DIR> ..
22.12.2013 17:48 392 test.js
22.12.2013 17:23 0 test������.txt
22.12.2013 17:27 <DIR> test�������
2 Datei(en), 392 Bytes
3 Verzeichnis(se), 273.731.170.304 Bytes frei

这是我的 Node 代码:

var exec = require('child_process').exec,
child;

child = exec('dir',
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});

最佳答案

我设法通过在我的 exec 命令开始时添加 cmd/c chcp 65001>nul &&(此命令将 cmd 的控制台输出设置为 utf-8)来修复它,所以你看起来像 cmd/c chcp 65001>nul && dir,它应该可以工作。

如果你写跨平台可以使用process.platform,来确定你什么时候需要它,像这样:

var cmd = "";
if (process.platform === "win32") {
cmd += "cmd /c chcp 65001>nul && ";
};
cmd += "dir";

child = exec(cmd, //...
  • 尽管 dir 命令不是“跨平台的”。

关于windows - 在 Windows 下使用 child_process spawn 或 exec 时编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20731785/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com