文字コードUTF-8で、BOMの有無による問題

Xoopsのモジュールを書いていて、すごく悩ましい問題に出くわした。
テンプレートを2つ(それぞれ仮にAとBと呼ぶことにする)用意したのだが、同じようなタグしか記述していないのに、どうしても片方で余白ができてしまう。原因を突き止めるためにテンプレートの中身を最低限の内容にしてみた。

テンプレートAの中身
<div>A</div>

テンプレートBの中身
<div>B</div>

しかしこれでも片方で余白が出来てしまう。これはスタイルシートとかタグレベルの問題ではないことは明白だ。では何がそうさせるのか。
答えは「UTFのBOM」でした。

最近は文字コードとしてUTF-8を使用するようにしている。テキストエディタとしてEmEditorを愛用しているのだが、UTF-8でもBOMの有無を設定できるようになっている。
BOMとはUTF-16で必要となる「ビット列の並び」を示す符号のようなものだ(検索したらそう書いてあった)。本来UTF-8では必要ないはずなのだが、UTFで書かれているということを示すためだけにBOMがつけられるとのことだった。

前述の問題は片方のテンプレートがBOM付きで保存されていたことが問題で、BOMをとって保存すると余白なく表示されることを確認できた。
いずれにしても文字コードは、問題を引き起こす原因の一つであることは間違いないようだ。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net