在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
使用exec
或spawn
将导致:
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 Code:
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);
}
});
4条答案
按热度按时间4ioopgfo1#
我通过在我的exec命令开始时添加
cmd /c chcp 65001>nul &&
(此命令将cmd的控制台输出设置为utf-8)来修复它,所以你看起来像cmd /c chcp 65001>nul && dir
,它应该可以工作。如果你写跨平台可以使用
process.platform
,来确定你什么时候需要,类似这样的东西:dir
命令不是“跨平台”。wkyowqbh2#
我通过下面的代码解决了它(简体中文),不知道其他语言的编码页面,也许你可以从微软网站上找到它:
tct7dpnv3#
来自http://www.nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
还有第二个可选参数用于指定多个选项。默认选项为
也就是说,Node默认为utf8,而Windows对于不同的语言版本有不同的代码页。
ubby3x7f4#