「UTF-8」や「UTF-16」等の一部の文字コードには、「BOM」と呼ばれるフラグのようなものを付ける場合があります。
BOMはファイルの先頭につけられるバイナリのデータであり、UTF-8の場合は16進数で「EF BB BF」、UTF-16の場合は16進数で「FE FF」となります。
(詳しくは、英語版のWikipediaに記載があります
BOMは、そのファイルが何の文字コードを使用しているか判定するために用いられるものです。
BOMは現在は使用されることが少なく、使用すると逆にトラブルの元になることもあります。
しかし、現在でもBOMを使用するソフトウェアは存在し、その代表例はExcelです。
Excelでは標準の文字コードがSJISですが、BOM付きのファイルを読み込んだ場合はBOMが示す文字コードが使用されます。
以下では、読み込みと書き込みの例を示します。
【読み込み】
以下はBOM無しのUTF-8のCSVファイルです。

バイナリエディタでファイルを開くと以下の通りです。
ファイルの先頭に「EF BB BF」がありません。

これをExcelで開くと、SJISと判定され、文字化けします。

今度は、同じデータで、BOMを付与したCSVファイルを用意します。
バイナリエディタでファイルを開くと以下の通りです。
ファイルの先頭に「EF BB BF」があります。これがBOMです。

これをExcelで開くとUTF-8と判定され、文字化けしません。

【書き込み】
Excelで開いたCSVファイルを、「Unicodeテキスト(*.txt)」形式で保存します。
すると、BOM付きのUTF-16形式でデータが保存されます。

これをExcelで開くと、UTF-16形式のBOMである「FE FF」が確認できます。

最後の投稿から日が開いてしまいましたが、ゴールデンウィークということで、久々の投稿です!
個のスキルを固める上で有用な書籍として、先日、株式会社サイゼントから書籍「絶対にJavaプログラマーになりたい人へ」を発売しました。
同時に、Javaプログラマーとしてのキャリアをスタートしたい人向けのプログラミングスクール「サイゼントアカデミー」も開校しました。
ご興味のある方は是非!
この記事が何かの役に立てば幸いです。
コメント