Muni Bus

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

【文字コード】各種文字コードにおけるBOMとエンディアンの関係

シフトJISUTF-8UTF-16におけるBOM(バイトオーダーマーク)とエンディアンの関係を調べてまとめた。以下に、以下10文字の文字コードを文字の右側に列記した。左から順に、シフトJISUTF-8UTF-16

A 0x41 0x41 0x0041
B 0x42 0x42 0x0042
C 0x43 0x43 0x0043
1 0x31 0x31 0x0031
2 0x32 0x32 0x0032
3 0x33 0x33 0x0033
あ 0x82A0 0xE38182 0x3042
い 0x82A2 0xE38184 0x3044
阿 0x88A2 0xE998BF 0x963F
伊 0x88C9 0xE4BC8A 0x4F0A

以下3行の文字列を、テキストファイルtext.txtに保存する。

ABC123
あい
阿伊

text.txtをサクラエディタ文字コードを選んで順番に保存して、PowerShellのFormat-Hexコマンドレットで、ファイルをダンプする。

PS > Format-Hex .\text.txt

文字コードで保存したときの出力結果は以下のとおり。 シフトJIS

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   41 42 43 31 32 33 0D 0A 82 A0 82 A2 0D 0A 88 A2  ABC123.. ¢..¢
00000010   88 C9 0D 0A                                      É..

UTF-8 BOM無し

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   41 42 43 31 32 33 0D 0A E3 81 82 E3 81 84 0D 0A  ABC123..ãã..
00000010   E9 98 BF E4 BC 8A 0D 0A                          é¿ä¼..

UTF-8 BOM付き

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   EF BB BF 41 42 43 31 32 33 0D 0A E3 81 82 E3 81  ABC123..ãã
00000010   84 0D 0A E9 98 BF E4 BC 8A 0D 0A                 ..é¿ä¼..

UTF-16 BOM無し

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   41 00 42 00 43 00 31 00 32 00 33 00 0D 00 0A 00  A.B.C.1.2.3.....
00000010   42 30 44 30 0D 00 0A 00 3F 96 0A 4F 0D 00 0A 00  B0D0....?.O....

UTF-16 BOM付き

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   FF FE 41 00 42 00 43 00 31 00 32 00 33 00 0D 00  .þA.B.C.1.2.3...
00000010   0A 00 42 30 44 30 0D 00 0A 00 3F 96 0A 4F 0D 00  ..B0D0....?.O..

00000020 0A 00 UTF-16 ビッグエンディアン BOM無し

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   00 41 00 42 00 43 00 31 00 32 00 33 00 0D 00 0A  .A.B.C.1.2.3....
00000010   30 42 30 44 00 0D 00 0A 96 3F 4F 0A 00 0D 00 0A  0B0D....?O.....

UTF-16 ビッグエンディアン BOM付き

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   FE FF 00 41 00 42 00 43 00 31 00 32 00 33 00 0D  þ..A.B.C.1.2.3..
00000010   00 0A 30 42 30 44 00 0D 00 0A 96 3F 4F 0A 00 0D  ..0B0D....?O...
00000020   00 0A 

以上のことから、以下のようにまとめられる。

文字コード BOMの有無                 BOM      エンディアン
シフトJIS  -                         -        ビッグエンディアン
UTF-8      BOM無し                   -        ビッグエンディアン
UTF-8      BOM付き                   EF BB BF ビッグエンディアン
UTF-16     BOM無し                   -        リトルエンディアン
UTF-16     BOM付き                   FF FE    リトルエンディアン
UTF-16     ビッグエンディアンBOM無し なし     ビッグエンディアン
UTF-16     ビッグエンディアンBOM付き FE FF    ビッグエンディアン