我有一个文件保存为UCS-2 Little Endian我想更改编码,所以我运行了以下代码:
cat tmp.log -encoding UTF8 > new.log
生成的文件仍在UCS-2 Little Endian中。这是因为管道始终采用这种格式吗?有没有一种简单的方法可以将其作为UTF8传输到新文件?
答案 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))