我有一个保存为 UCS-2 Little Endian 的文件我想更改编码,所以我运行了以下代码:
cat tmp.log -encoding UTF8 > new.log
生成的文件仍在 UCS-2 Little Endian 中。这是因为管道总是采用这种格式吗?有没有一种简单的方法可以将它作为 UTF8 传输到新文件?
我有一个保存为 UCS-2 Little Endian 的文件我想更改编码,所以我运行了以下代码:
cat tmp.log -encoding UTF8 > new.log
生成的文件仍在 UCS-2 Little Endian 中。这是因为管道总是采用这种格式吗?有没有一种简单的方法可以将它作为 UTF8 传输到新文件?
正如这里所建议的:
Get-Content tmp.log | Out-File -Encoding UTF8 new.log
我会这样做:
get-content tmp.log -encoding Unicode | set-content new.log -encoding UTF8
我的理解是 -encoding 选项选择文件应该被读取或写入的编码。
使用编码从 xml 文件加载内容。
(Get-Content -Encoding UTF8 $fileName)
如果您正在读取 XML 文件,这里有一个更好的方法来适应您的 XML 文件的编码:
$xml = New-Object -Typename XML
$xml.load('foo.xml')
PowerShell 的 get-content/set-content 编码标志不处理所有编码类型。您可能需要使用 IO.File,例如使用 Windows-1252 加载文件:
$myString = [IO.File]::ReadAllText($filePath, [Text.Encoding]::GetEncoding(1252))