我有一个保存为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选项选择文件应该读取或写入的编码。
[Console] :: OutputEncoding = [System.Text.Encoding] :: UTF8
? - brettinternetGet-Content
读取XML文件,因为这需要事先了解文件编码。最好让XML解析器自行读取文件,因为它可以正确处理文件可能具有的任何编码。$xml = (New-Object System.Xml.XmlDocument).Load($fileName)
- Tomalak$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))