目次
BOM(Byte Order Mark)とは?
BOM(Byte Order Mark)の略で、Unicodeテキストファイルの先頭に挿入される特殊なバイトのシーケンスです。
主に、ファイルのエンコーディングと文字の並び順(バイトオーダー)を示すために使用されます。
BOMの役割
BOMの主な役割の1つは、異なるプラットフォームやオペレーティングシステムでのテキストファイルの解釈を容易にする能力です。
BOMを含めることで、ファイルはバイトオーダに関する情報を提供し、異なるシステム間でのファイルの共有や転送が容易になります。
また、BOMは異なるUnicodeエンコーディングを区別するためにも使用されます。
例えば、UTF-16の場合、ビッグエンディアン(big-endian)とリトルエンディアン(little-endian)の2つのバイトオーダがありますが、BOMを使用することで、エンコーディング方式が識別され、テキストデータが正しく解釈されます。
さらに、BOMは、Unicodeエンコーディングの存在を示し、ソフトウェアが適切な処理を行うのを支援します。
BOM付き・BOM無しの違い
UTF-8で言いますと、UTF-8のBOM付き・BOM無しの違いは、ファイルの先頭に「UTF-8ですよ」というマークが付くか否かです。
BOMがあるかないかは、場面によって利点や欠点があります。
BOMがあると、テキストエディタなどでエンコーディング形式を選択する必要がなくなります。
しかし、BOMがあることでプログラムが正常に動作しない場合もありますし、BOMがないことで文字化けが発生することもあります。
一般的には、BOMがないとExcelでCSVファイルを開くと文字化けが起こることがあります。
CSVファイルの絵文字の文字かけ対応
UTF-8形式のファイルにBOMが含まれると、ファイルを開くときにテキストエディターなどのソフトウェアが正しくエンコードを解釈できるようになります。
以下は、fwrite($stream, "\xEF\xBB\xBF");を使用してBOMを含むUTF-8形式のCSVファイルを生成するPHPコードの例です。
このコードでは、与えられたデータをUTF-8形式のCSVファイルに書き込み、そのファイルにBOMを含めます。
まとめ
BOMは、テキストファイルの先頭に配置される特殊なバイト列であり、ファイルがUnicodeでエンコードされていることを示します。
BOMの存在は、ファイルの文字エンコーディング形式やエンディアン(バイトオーダー)を識別し、異なるシステム間でのテキストの解釈を容易にします。
ただし、BOMが必要ない場面もあり、BOMが存在することで問題が発生することもあります。
それでも、BOMは特定の状況下で役立つことがありますが、適切に使用することが重要です。