Livingdeadの日記: UTF-8のBOMに気づかずハマル 1
日記 by
Livingdead
なぜかエディタで開いて空っぽのはずのテキストファイルなのに、サイズが3バイトの物がある。NTFSの副ストリーム?あれってExplorerで表示されるファイルサイズに反映されたっけ?とか見当違いのことを考えたあげく、結局UTF-8のBOMだと判明した。
一部のテキスト処理アプリケーション (エディタなど) では、作成したテキストデータの先頭にBOMを付加する (付加するかどうかを選択できるものもある)。付加する場合は、EF BB BF (16進。U+FEFFのUTF-8での表現) をデータの先頭に付加する。なお、BOMありの方をUTF-8、なしの方をUTF-8Nと呼ぶこともあるが、このような呼び分けは日本以外ではほとんど知られておらず、また公的規格などによる裏付けもない。このため、UTF-8という呼び名を使っていれば情報交換の相手が文書先頭にBOMがあると見なすと期待すべきではないし、いっぽう、UTF-8Nという呼び名は情報交換の際に用いるべきではない。
UTF-8 - Wikipedia
最初からバイナリエディタで開いていれば良かった。
バイナリエディタ Bz ver 1.62 last updated 2004/03/06
c.mos's free software
c.mos氏と言えば、Vzエディタでは大変お世話になりました。
Windows のメモ帳は (スコア:1)
私も一時期 BOM をつけてはいけないプログラムに対して BOM つきの UTF-8 文書を読み込ませようとしてはまったことがあります。
Windows XP/Server 2003 のメモ帳は、 UTF-8 で保存するとこの BOM が付加されます。
(何も書いてないつもりでも、 3 バイトのファイルになる)
Internet Explorer 6, 7 で、 BOM および <meta http-equiv="Content-Type" content="text/html; charset=..."> タグがない UTF-8 テキストは Shift_JIS だと誤認します。
The Unicode Consortium の FAQ [unicode.org] では、「付与することができます。」というスタンスのようです。
面倒くさいですね。