Write-Output March > a.txt
我得到了这个结果:
U+FEFF
M U+004D
a U+0061
r U+0072
c U+0063
h U+0068
U+000D
\n U+000A
我不想要BOM。我尝试了不同的方法,例如:
$OutputEncoding = [System.Text.UTF8Encoding]::new($false)
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new($false)
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new($false)
但是它们都没有解决这个问题。注意,我正在使用PowerShell 5.1。我看到了一些类似的问题,但不完全与此问题相同,因为它们处理管道和外部命令。
| Out-File $PROFILE.AllUsersCurrentHost -Append
添加了两个字符串,而且配置文件(5.1版本)是UTF-16LE编码(与Powershell现在默认的UTF-8不同)。在更改区域设置之前添加(或在添加时使用16LE编码)可以解决这个问题。 - gargoylebident