UTF-8のBOMに苦しむ

PHPのheader関数でページをリダイレクトさせようとしたところ、

"Warning: Cannot modify header information - headers already sent by ~"

のエラーが出てうまく処理がされません。
出力ヘッダに何かごみが入ってるのだろうとソースを探るも、どこにもそれらしき記述は一向に見当たらない。

<?php
  header ("Location:http://www.hoge.com");
?>

気を取り直してこんな最小限のソースで動作確認を試みるも、それでもエラーは消えず。
こんなソースに何がいる!?

その後もいろいろと試行錯誤の末、文字コードをUTF-8にしている時に出るということにようやく気づきました。

私は開発にEmEditorを使用しているのですが、このソフトがUTF-8保存時にデフォルトで付けてくれているBOMが怪しいようです。
BOM無しで保存し直したら、今までの苦労がバカのようにあっさりとエラーは消えました。
BOMが付いていることでマークがテキストの先頭に必ず含まれるため、出力ヘッダに入り込んでしまっていたようです。

・UTF-8(Wikipedia)

あまりにも不可解だったため、もうバッファで処理しようか、リダイレクトやめてページをincludeして済まそうかと何度も妥協しかけましたが、根本的解決にいたってスッキリしました。

関連記事

トラックバック(0)

このブログ記事を参照しているブログ一覧: UTF-8のBOMに苦しむ

このブログ記事に対するトラックバックURL: http://blog.knockoutmarch.com/mt3/mt-tb.cgi/80

コメントする

このブログ記事について

このページは、ko31が2007年11月17日 03:50に書いたブログ記事です。

ひとつ前のブログ記事は「種子島出張にて」です。

次のブログ記事は「encoding_translationはやっかいだ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

RSSフィード

  • 購読する

いろいろ

あわせて読みたい

フィードメーター - ポップフライ

seo

Powered by Movable Type 4.01