
基本中の基本なのでしょうが、普段まったく意識していなかったため、解決するのにハマってしまった為、メモ。
PHPで出力するHTMLで、ブラウザ表示すると、先頭に変なスペースが入るので調査しました。
firebugでコードを見てみると、Doctype宣言部分が表示されない。
ブラウザの「ソースを表示」で見る限りなにもおかしいところはなかったのですが、
ソースをコピーして秀丸にペーストすると空白でもタブでもないスペースがある。
ペーストした秀丸から、先頭のスペースを削除してHTMLファイルとしてブラウザで見ると正しく表示されました。
[原因]
PHPのソースコードを、UTF-8Nではなく、UTF-8で作成していました。
UTF-8Nは、BOM無しのUTF-8です。
BOM(Byte Order Mark)とは、システムのエンディアンがビッグエンディアンかリトルエンディアンのどちらであるかを指定するためにデータの先頭に置かれるコードのことである。
このBOMがDoctype宣言の前に出現していたため、正しく表示されなかったようです。
[対策]
BOMが入らないように、PHPのエンコーディングは「UTF-8」ではなく「UTF-8N」を使おう!