47

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

cat tmp.log -encoding UTF8 > new.log

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

4

5 回答 5

57

正如这里所建议的:

Get-Content tmp.log | Out-File -Encoding UTF8 new.log
于 2008-09-16T20:41:58.397 回答
34

我会这样做:

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

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

于 2008-09-16T20:36:07.133 回答
8

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

(Get-Content -Encoding UTF8 $fileName)

于 2014-06-05T10:33:39.197 回答
1

如果您正在读取 XML 文件,这里有一个更好的方法来适应您的 XML 文件的编码:

$xml = New-Object -Typename XML
$xml.load('foo.xml')
于 2015-07-20T16:45:37.233 回答
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

于 2021-05-24T20:20:11.367 回答