powershell和cmd之间的文件大小不同

Log*_*Wlv 1 windows powershell cmd node.js

我正在使用一个小processconf.js工具configuration.json从多个.json文件构建一个文件.

这里是我使用的命令:

node processconf.js file1.json file2.json > configuration.json 
Run Code Online (Sandbox Code Playgroud)

我正在使用cmd片刻,但今天我尝试使用Powershell并以某种方式从相同的文件相同的命令我有不同的结果.

一个文件是33kb(cmd)另一个66kb(powershell),查看文件他们有完全相同的行,我找不到任何视觉差异,为什么会这样?

Joe*_*oey 5

PowerShell默认为UTF16LE,而cmd默认情况下不会对重定向执行Unicode(有时可能最终会破坏您的数据).

如果您不在PowerShell中使用重定向运算符,而是Out-File可以指定编码,例如

node processconf.js file1.json file2.json | Out-File -Encoding Utf8 configuration.json
Run Code Online (Sandbox Code Playgroud)

我认为-Encoding Oemcmd行为有点相似,但通常不支持Unicode,并且涉及转换.

重定向操作符当然没有指定任何选项的规定,因此当您关心确切的输出格式时,它通常不是最佳选择.而且由于PowerShell与Unix shell相反,处理对象,文本和随机二进制数据是截然不同的事情.

顺便说一句,cmd如果你运行它,你会得到相同的行为cmd /u.