使用PowerShell以UTF-8编写文件而不使用BOM而不进行双重编码

时间:2012-11-05 14:30:48

标签: powershell encoding recursion utf-8 byte-order-mark

我在这个论坛上看到了几个很棒的解决方案,可以转换为没有BOM的UTF-8。我需要能够使用powershell或类似的递归方式转换一系列文件。

如果我使用UTF-8文档并将其转换为UTF-8,则字符将被双重编码。有没有办法防止此行为或检测文件是否已经是没有BOM的UTF-8?

foreach($i in ls -recurse -filter "*.*") {
    if (
        $i.Extension.ToLower() -eq ".html" -or 
        $i.Extension.ToLower() -eq ".htm" -or 
        $i.Extension.ToLower() -eq ".php" -or 
        $i.Extension.ToLower() -eq ".txt"
    ) {
        $MyFile = Get-Content $i.fullname 
        [System.IO.File]::WriteAllLines($i.fullname, $MyFile)
    }
}

1 个答案:

答案 0 :(得分:1)

您可以为Get-Content提供编码:

Get-Content $i.FullName -Encoding UTF8