Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【PowerShell】ファイル作成時のデフォルトの文字コード

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. ¢..