当サイトはこのブログページ以外はローカルからFTPでアップしているのですが、文字エンコーディングをUTF-8にしてから初めてValidatorでチェックしてみたら、(Validではあるのですが)何やらエラーが。
Byte-Order Mark found in UTF-8 File.
The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.
意訳すると「符号化方式がUTF-8であるファイルに含まれるBOMは、いくつかのテキストエディタと古いブラウザでは問題を引き起こすことが知られています。あなたはそれらがサポートされるまで、使用を避けることを考えたほうがいいかもしれません。」って感じ?
全然分からないのでバイトオーダーマークをWikiって見たけど、まぁ分かるはずもなく、とりあえずテキストエディタがTeraPadだったので、GAC なぜなにGAC->Web一般を参考に文字コードをUTF-8Nにして保存したらエラーはなくなったけど、原因は分からず。文字エンコーディングをUTF-8にしたからなのか、PHP化するときに最初のXML宣言のところを<?echo('<?xml version="1.0" encoding="UTF-8"?>')?>
としたからなのか。むぅ…。
UTF-8 で保存していたのを UTF-8N で保存しなおしたら、ファイルデータの先頭の EF BB BF という 3バイトがつかなくなった、ただそれだけのことで、べつに難しい話ではないような。
はい、その通りだと思います。ただちょっと突っ込んでみて、「なんでその3バイトが付く(BOMを付加する)とエラーになるのか」ということを疑問に思いまして。でもこれ、ちゃんと読み返してみると「符号化方式がUTF-8であるファイルに含まれるBOMは、いくつかのテキストエディタと古いブラウザでは問題を引き起こすことが知られている」からなんですよね。その問題の内容とか理由については、特に興味ないので深く調べないことにします。