CSVファイルをExcelで確認すると文字化けすることはありませんか。
それは文字コードがUTF-8のBOM無しで作成されているからかもしれません。
UTF-8とは文字コードの一種です。
本記事ではUTF-8、UTF-16等のファイルでBOM付き、BOM無しの違い、BOM有無の確認方法、作成方法についてご紹介させていただきます♪
BOM付き、無しの違いについて
まずBOMの話を進める前にUnicodeとUTF-8、UTF-16、UTF-32の話を少しします。
UnicodeとUTF-8、UTF-16、UTF-32とは
ここでは簡単に話をしますが、
Unicodeとは世界中の様々な文字を集めた定義(符号化文字集合)のことです。
UTF-8、UTF-16、UTF-32はUnicodeを符号化して文字コード(符号化方式)が設定された状態です。
要は番号が振られています。この番号の振り方が異なるのでUTF-8、UTF-16、UTF-32があります。
また、UTF-16とUTF-32にはコンピュータの構造によってエンディアン(バイトオーダー)方式が異なります。
BOMとは
BOMの説明に戻りますが、BOMというのはバイトオーダーマーク(byte order mark)といい、ファイルの先頭に付与されます。
※ メモ帳等のテキストエディタで開いて目視で確認することはできません。
このBOMの値を見てUTF-16、UTF-32エンディアンを判定します。
…ん?ということはもしかしてUTF-8にはBOMは必要ない?
UTF-8はエンディアン方式の違いはないので本来BOMは必要ありません。
しかし、アプリ(プログラム)によっては文字コードをUTF-8と判断できず、文字化け等の不具合を起こすことがあります。
※ Microsoftのアプリ(Excel、メモ帳)で多い
また逆にBOM付きを想定されていないアプリ(プログラム)では、不具合を起こす場合があります。
※ Webページの開発で使われるhtmlやPHPではBOM無しでないと動作しない場合がある
そのため、UTF-8ではBOM付き、BOM無しのファイルが存在します。
ファイルのBOM確認方法
ここではBOM有無の確認方法についてご紹介します。
Windowsに標準で入っているメモ帳で確認するのが一番簡単です。
メモ帳での確認方法
ファイルをメモ帳で開いたときに右下に文字コードが表示されます。
ただし、Windowsのバージョンによっては保存することで自動的にBOM付きのファイルで上書き保存してしまうことがあるので注意が必要です。
※ サクラエディタやTeraPadなど他のテキストエディタでも確認できるものもありますので、確認してみてください。
バイナリエディタでの確認方法
正直バイナリエディタで確認する必要はありませんが、どうしても文字コードを見て確認したい場合はバイナリエディタでBOMを確認することができます。
バイナリエディタでファイルを開き、先頭バイトが「EF BB BF」が付いているとBOM付きファイルであることを確認できます。
画像ではフリーソフトの「Stirling」を使っています。
BOM付き、BOM無しのファイルの作成方法
メモ帳での作成方法
メモ帳で「ファイル」→「名前を付けて保存」で画像の画面が表示されるので、画像下部の「エンコード」クリックで
・UTF-8
・UTF-8(BOM付き)
を選ぶことでBOM付き、BOM無しのファイルを作成することができます。
※ サクラエディタやTeraPadなど他のテキストエディタでも作成できるものもありますので、確認してみてください。
補足
先ほど少し出てきましたが、MicrosoftのExcelではBOM無しでは文字化けしてしまいます。
そのため、ファイルをExcelファイルで開いたとき、文字化けが起こっている場合はBOM無しであることを疑ってみてください。
※ ただし半角文字の場合、文字化けを起こさないこともあるので
文字化けが起こらない = BOM付き とは限らないので注意してください。
※ 別記事でExcelでBOM付きファイルを開く方法をご紹介する予定です。
まとめ
本記事ではUTF-8のファイルについての説明、BOM付き・BOM無しの確認や作成方法をご紹介しました。
アプリによってBOM付き、無しで動く、動かないが異なるので統一されるとファイルが扱いやすくなって良いですね!