PowerShellにおけるファイル作成時のデフォルトの文字コードはUTF-16。Out-Fileコマンドレットで試してみる。
PS > "A1`nあい" | Out-File temp.txt PS > Format-Hex .\temp.txt パス: ○○○\temp.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 FF FE 41 00 31 00 0A 00 42 30 44 30 0D 00 0A 00 .þA.1...B0D0....
「FF FE」というBOMが付いている。 ASCII文字(A:0x41、1:0x31、LF:0x0a)は2バイトかつリトルエンディアンで格納されている。 日本語文字(あ:0x3042(UTF-16)、い:0x3044)は2バイトかつリトルエンディアンで格納されている。 よって、PowerShellのコマンドラインでファイル作成時は、デフォルトで「UTF-16(リトルエンディアンのBOM付き)」でファイルが作成される。
なお、ややこしいが-Encodingオプションにdefaultを指定すると、シフトJISで作成されるので注意。
PS > "A1`nあい" | Out-File -Encoding default temp.txt PS > Format-Hex .\temp.txt パス: ○○○\temp.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 41 31 0A 82 A0 82 A2 0D 0A A1. ¢..