我正在使用一个小的processconf.js
工具从多个 .json 文件构建一个configuration.json
文件。
这是我正在使用的命令:
node processconf.js file1.json file2.json > configuration.json
我暂时使用cmd
,但是今天我尝试使用Powershell
,并以某种方式使用相同文件和相同命令确实有不同的结果。
一个文件为 33kb (cmd),另一个为 66kb (powershell),查看它们具有完全相同的行,我看不到任何视觉差异, 这是为什么 ?
答案 0 :(得分:5)
PowerShell默认为UTF16LE,而cmd
默认情况下不对重定向进行Unicode处理(可能有时也会破坏数据)。
如果您未在PowerShell中使用重定向运算符,而是使用Out-File
,则可以指定一种编码,例如
node processconf.js file1.json file2.json | Out-File -Encoding Utf8 configuration.json
我认为-Encoding Oem
与cmd
的行为有些相同,但通常不支持Unicode,并且涉及转换。
重定向操作符当然没有规定任何选项的规定,因此,当您关心确切的输出格式时,它通常不是最佳选择。而且由于PowerShell与Unix Shell相反,处理对象,文本和随机二进制数据是非常不同的事情。
顺便说一下,如果您使用cmd
运行cmd /u
,您将得到相同的行为。