0
从Windows上的PowerShell运行Node.js假定stdout必须是UTF-16文本流。这对于将二进制Buffer对象发送到stdout的工具产生了令人惊讶的结果。有没有办法解决这个问题?从Windows PowerShell使用节点,我可以生成二进制输出到标准输出吗?
命令行例如:
node -e "process.stdout.write(new Buffer('abc'))" >tmp.dat
使用PowerShell,生成的文件,tmp.dat现在为12个字节长,而不是只有3个字节长。
从CMD.EXE启动的完全相同的例子会生成预期的3字节文件。
P.S.我原本以为这是一个node.js问题,但现在清楚它是一个PowerShell问题。
即使UTF-8也不会帮助你。两者都是文本编码,不能用于任意二进制数据。 – Joey
'start node'-e“process.stdout.write(new Buffer(''abc''))”'-RedirectStandardOut tmp.dat -NoNewWindow -Wait' – PetSerAl
感谢@PetSerAL,你绝对正确的做到了。虽然相当可恶。 –