我正在使用node.js围绕wmic构建我的自定义包装器,我在解析它的输出时遇到了问题。没问题,但我不知道为什么会这样。
我认为行结尾是\r
或\r\n
并决定查看它
这是一段演示代码:
exec('wmic process', {maxBuffer :1000*1024}, function (err, stdout, stderr){
let location =stdout.indexOf('\n')-6;
let region =stdout.substr(location, 10);
console.log(region);
let buf = new Buffer(stdout);
let buf2 = new Buffer(30);
buf.copy(buf2, 0, location, location+30);
console.log(buf2);
});
我看了region
并看到了这个:
出于某种原因,有两个\r
而不是一个!
console.log(buf2)
的输出也显示了这一点:
<Buffer 6f 75 6e 74 20 20 0d 0d 0a 53 79 73 ...
^^ ^^ ^^
当我决定将输出管道输出到文本文件并查看十六进制编辑器时,我准备按\r\r\n
拆分行:
wmic process > wmic.txt
什么?哪两个\r
?
我有两个问题:
Node从哪里获得第二个\r
?我试图找到一些信息,但谷歌对\r\r\n
这样的查询很重,this是我能得到的最接近的,我不确定它是否相关
为什么hex编辑器显示16位编码而Node不显示?我想我应该在exec()
选项中指定编码,但我不知道哪一个。 chcp
显示了第437个代码页,但我还希望它能够在其他代码页中使用。