板挟み に絡んでencodingネタ。
テキストファイルの先頭にBOMを打ち込んでUTF8であることを示すってやり方があります。
たとえばテキストエディタがファイルを読み込む際、アタマにBOMがあればUTF8とみなして
適切なコード変換をかける、とか。
そもそもBOMてぇのはその名:Byte Order Markのとおり、
ワイド文字のバイト順(下位バイトが先か/上位バイトが先か)を示すもののはず。
UTF16BE(BigEndian)/UTF16LE(LettleEndian)をBOMで判別するとかね。
BOMには「後続する文字のコードはUTF8だよ」の意味はカケラもないのす。
なのにそんな(UTFだよ、の)意味合いで使われてるケースが少なくない。
誰だこんなデタラメを広めた奴ぁ!
[追記]
キモチはわからんくもないのね。 BOM: 16進で FEFF がUTF8のルールで変換された
もんがファイルのアタマについてる。
テキストファイルを前提としているとき、そんなパターンがアタマにあればほぼ確実
にUTF8と判別できる。
BOMは幅0(つまり無視できる)文字なんで、実害のないBOMをアタマに置いて
encodingによる特殊な識別パターンを作ってるわけやな。
そのからくりならBOMをshift_jisやらiso-2022-jpやらeuc-jpやらに適用しても構わん
ように思えるが...問題は FEFF をそれらencodingで表現できるか、なのかな。