覆盖Powershell>快捷

时间:2015-11-30 08:44:34

标签: powershell encoding utf-8

在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的行为,我想改变>的行为。

2 个答案:

答案 0 :(得分:3)

不,不能完成

甚至文件也提到了这一点。 从Get-Help about_Redirection的最后一段开始:

  

你什么时候   写入文件,重定向运算符使用Unicode编码。如果   该文件具有不同的编码,输出可能没有格式化   正确。 要将内容重定向到非Unicode文件,请使用Out-File   cmdlet及其编码参数。

(强调补充)

答案 1 :(得分:1)

changing the $OutputEncoding variable可以覆盖输出编码。但是,这仅适用于将输出管道输出到可执行文件中。它不适用于重定向运算符。如果您需要特定的文件输出编码,则必须使用Out-FileSet-Content -Encoding参数(或StreamWriter)。