在PowerShell 2.0中将编码设置为ANSI

3

我想使用Set-Content命令的参数-Encoding将文件的编码设置为ANSI,我尝试了以下方法,但没有成功:

Set-Content -LiteralPath "$filePath" -Encoding Default
3个回答

10

PowerShell v2不识别参数-EncodingDefault选项。使用Ascii参数以使用ANSI编码保存文件:

Set-Content -LiteralPath "$filePath" -Encoding Ascii

或者完全省略该参数(Set-Content 默认使用 ANSI 编码):

Set-Content -LiteralPath "$filePath"

我尝试过这个,但当我打开输出文件时,发现它是以UCS-2 littleEndian编码的。 - Zakaria Belghiti
1
@ZakariaBelghiti 显然不可能。请提供证据。 - Ansgar Wiechers
不确定是否有绕开的方法,但我收到以下消息:Set-Content: 由于一个或多个缺少的强制参数值而无法处理命令。 我只想更改编码而不是内容。 是否有不同的命令可用。 - Matt Fricker

1
我使用.NET的WriteAllText函数来实现这个功能:

.NET WriteAllText

[IO.File]::WriteAllText($filePath, (Get-Content $filePath))

确保使用以下方法设置默认编码以反映您想要的输出:

[System.Text.Encoding]::Default

否则,将所需编码的枚举添加为第三个参数。

它没有起作用,它说找不到参数-raw,也许在PowerShell 2.0中不支持。 - Zakaria Belghiti
啊,好的,请尝试使用不带它的 get-content。 - Martin Brandl
你得到了什么编码? - Martin Brandl
UCS-2小端序 - Zakaria Belghiti

0
这个问题实际上是有效的。请注意,ANSI不是ASCII,而是windows-1252编码(参见iso-8859-1)。它没有BOM。这是PowerShell 5.1的默认设置(有一些例外,比如out-file或">",它是utf16)。PowerShell 7的默认设置是utf8无BOM。
echo á | set-content foo -Encoding Default
cat foo
á


echo á | set-content foo -Encoding ascii
cat foo
?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接