1. ホーム
  2. エンコーディング

[解決済み】PowerShellでBOMなしのUTF-8でファイルを書き込む場合

2022-03-27 21:29:16

質問

Out-File は、UTF-8を使用する場合、BOMを強制するようです。

$MyFile = Get-Content $MyPath
$MyFile | Out-File -Encoding "UTF8" $MyPath

PowerShellを使用して、BOMなしのUTF-8でファイルを書き込むにはどうすればよいですか?

2021年更新

10年前にこの質問を書いたときから、PowerShellは少し変わりました。以下の複数の回答をチェックしてみてください。

どのように解決するのですか?

.NETの UTF8Encoding クラスを作成し $False をコンストラクタに渡すと、うまくいくようです。

$MyRawString = Get-Content -Raw $MyPath
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($MyPath, $MyRawString, $Utf8NoBomEncoding)