PHPとUTF-8


Curlとは直接関係ありませんが、サーバー連携のために、
PHPファイルをUTF-8で書いてたら、こんなエラーが出ました。


「Warning: Cannot modify header information - headers already sent by ...」


header()関数とかを使っているならまだしも、
なにも書いていないも同然のコードでなぜこんなエラーがでるのかわからず
ちょっとハマってしまいました。


文字コードUTF-8から変えたらとエラーが出なくなったので、
いろいろ調べてなんとか解決できたのですが、
これ、どうやら、一般的な問題みたいですね。


ポイントは、UTF-8のファイルの先頭にある「Byte Order Mark(BOM)」。
これがPHPのコードが処理される前に出力されるため、
ヘッダーの文字コードと衝突してしまう、ということみたいです。


解決方法は、UTF-8NというBOMを入れない文字コードで保存すること。
とりあえずUTF-8Nが使えるフリーのエディタを使うようにします。