我正在尝试使用PowerShell将UTF-8文件转换为UTF-8-BOM



这是我正在使用的以下代码。

$file="final.txt"
$MyRawString = Get-Content -Raw "$file"
$Utf8BomEncoding = New-Object System.Text.UTF8BOMEncoding $False
[System.IO.File]::WriteAllLines($MyPath, $MyRawString, $Utf8BomEncoding)

如果您试图使用BOM输出utf8,则应创建参数encoderShouldEmitUTF8Identifier设置为$true$Utf8BomEncoding

接下来,使用方法WriteAllLines()实际上是为了写出一个行数组,所以您应该从Get-Content中删除-Raw开关,或者使用WriteAllText()方法。

尝试

PowerShell版本高达5.1(含5.1(:

Get-Content -Path 'final.txt' -Encoding UTF8 | Set-Content -Path 'final_BOM.txt' -Encoding UTF8

PowerShell 5.1以上版本:

Get-Content -Path 'final.txt' -Encoding UTF8 | Set-Content -Path 'final_BOM.txt' -Encoding utf8BOM

或使用。Net方法。请注意,您需要使用绝对完整路径

$Utf8NoBOM   = [System.Text.UTF8Encoding]::new($false)
$Utf8WithBOM = [System.Text.UTF8Encoding]::new($true)
[System.IO.File]::WriteAllText('X:final_BOM.txt', [System.IO.File]::ReadAllText('X:final.txt', $Utf8NoBOM), $Utf8WithBOM)

最新更新