PowerShellでテキストをファイルとして出力する際に。
改行コードを指定して出力する方法のサンプルとして、改行コードが混在したファイルをPowerShellで生成してみます。
BOMなしUTF8の文字コードが混在したファイルを作成する
PowerShellでは下記のように記述すれば、それぞれの改行コードで出力されます。
# WindowsなCRLF(0D0A)
$array = "helloworld" + "`r`n"
# LinuxなLF(0A)
$array += "helloworld" + "`n"
# 古いMacOSなCR(0D)
$array += "helloworld" + "`r"
$array | ForEach-Object { [Text.Encoding]::UTF8.GetBytes($_) } | Set-Content -Encoding Byte -Path "c:\temp\chaos.txt"
改行コードを可視化してくれるテキストエディタで表示して、出力されたファイルの改行コードを確認してみます。(画像はサクラエディタ)
もしくはUTF.GetBytesで変換したデータからでも確認できます。
やっている事としては、`r`n
, `r
, `n
でそれぞれの改行コードを入力して、これを[Text.Encoding]
のGetBytesメソッド
でエンコードして出力している形になります。
総評
改行コードをどうこうしたい場合は、これ一つ覚えておくと便利かと思います。