Powershell:为Get-Content管道设置编码

时间:2008-09-16 20:18:27

标签: encoding powershell

我有一个文件保存为UCS-2 Little Endian我想更改编码,所以我运行了以下代码:

cat tmp.log -encoding UTF8 > new.log

生成的文件仍在UCS-2 Little Endian中。这是因为管道始终采用这种格式吗?有没有一种简单的方法可以将其作为UTF8传输到新文件?

5 个答案:

答案 0 :(得分:53)

根据建议here

Get-Content tmp.log | Out-File -Encoding UTF8 new.log

答案 1 :(得分:28)

我会这样做:

get-content tmp.log -encoding Unicode | set-content new.log -encoding UTF8

我的理解是-encoding选项选择应该读取或写入文件的版权。

答案 2 :(得分:7)

使用编码从xml文件加载内容。

(Get-Content -Encoding UTF8 $ fileName)

答案 3 :(得分:1)

如果您正在阅读XML文件,这是一种更适合XML文件编码的方法:

$xml = New-Object -Typename XML
$xml.load('foo.xml')

答案 4 :(得分:0)

PowerShell 的 get-content/set-content 编码标志不能处理所有的编码类型。您可能需要使用 IO.File,例如使用 Windows-1252 加载文件:

$myString = [IO.File]::ReadAllText($filePath, [Text.Encoding]::GetEncoding(1252))

Text.Encoding::GetEncoding Text.Encoding::GetEncodings