在Powershell中使用>
与使用| Out-File
相同,所以我可以写
"something" > file.txt
并且它会将'something'写入file.txt。这就是我对shell的期望。不幸的是,Powershell使用Unicode来编写file.txt。将其更改为UTF-8的唯一方法是编写相当长的命令:
"something" | Out-File file.txt -Encoding UTF8
我想覆盖>
快捷方式,以便默认情况下添加UTF-8编码。有没有办法做到这一点?
不是重复的澄清:
这不重复。正如清楚地解释here,Out-File有一个硬编码的默认值。我不想改变Out-File的行为,我想改变>
的行为。
答案 0 :(得分:3)
甚至文件也提到了这一点。
从Get-Help about_Redirection
的最后一段开始:
你什么时候 写入文件,重定向运算符使用Unicode编码。如果 该文件具有不同的编码,输出可能没有格式化 正确。 要将内容重定向到非Unicode文件,请使用Out-File cmdlet及其编码参数。
(强调补充)
答案 1 :(得分:1)
changing the $OutputEncoding
variable可以覆盖输出编码。但是,这仅适用于将输出管道输出到可执行文件中。它不适用于重定向运算符。如果您需要特定的文件输出编码,则必须使用Out-File
或Set-Content
-Encoding
参数(或StreamWriter
)。