在PowerShell 2.0中将编码设置为ANSI

kmynzznz  于 2023-10-18  发布在  Shell
关注(0)|答案(3)|浏览(140)

我想使用Set-Content小工具的参数-Encoding将文件的编码设置为ANSI,我尝试了这个方法,但它不起作用:

Set-Content -LiteralPath "$filePath" -Encoding Default
nsc4cvqm

nsc4cvqm1#

PowerShell v2无法识别参数-Encoding的参数Default。使用参数Ascii保存ANSI编码的文件:

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

或者完全忽略该参数(Set-Content默认为ANSI编码):

Set-Content -LiteralPath "$filePath"
xxe27gdn

xxe27gdn2#

我使用.NETWriteAllText函数来实现:

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

使用以下命令确保默认编码反映您所需的输出:

[System.Text.Encoding]::Default

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

ryhaxcpt

ryhaxcpt3#

这个问题实际上是有效的。请注意,ANSI不是ASCII,而是Windows-1252编码的https://en.wikipedia.org/wiki/Windows-1252(参见ISO-8859-1)。它没有BOM。这是powershell5.1的默认设置(除了out-file或“>",即utf 16)。Powershell 7默认为utf8 no bom。

echo á | set-content foo -Encoding Default
cat foo
á

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

相关问题