UTF-8の基本
Unicodeに基づきながらも、旧来のASCIIコードとも互換性のある文字エンコード方式。
多言語対応でありながら扱いやすく、対応しているエディタも多いため、ウェブ関連やスクリプト言語を中心によく使われ、テキストファイルにおける文字エンコードのデファクトスタンダードになりつつある。
なお、「UTF-8」とハイフンを付けるのが正しい表記。
BOMとは
Byte Order Markの略で、通常「ボム」と読む。
Unicodeのファイルでバイト順を示すために先頭につける数バイトのデータのこと。
本来、なくても構わないもので、Unicodeの規格では、「UTF-8においてBOMは容認されるが、必須でも勧められるものでもない」(Wikipedia)。
呼称
BOM付きとBOMなしのUTF-8をそれぞれ区別するためにさまざまな呼称が存在しており、ややこしい。
UTF-8 BOMなし UTF-8 BOM付き
UTF-8 UTF-8N
UTF-8 シグネチャなし UTF-8 シグネチャ付き
UTF-8Nという言葉は日本でのみ使われる
シグネチャという言葉はMicrosoftのアプリでよく使われる(Visual Studioなど)
問題点
BOMを想定しているアプリ
BOMがないとUTF-8だと認識できず、種々の問題が起こる。
例:Microsoft Office Excel
BOMを想定していないアプリ
BOMがあるとそれを余計なデータだとみなし、種々の問題が起こる。
例:PHP
BOMを文字列とみなして出力してしまう。よって、無駄な出力があるだけでなく、header()などの関数が使えなくなってしまう弊害も起こる。
まとめ
通常は「UTF-8 BOMなし」を使う。
Unicodeの規格でもBOMは推奨していないため。