[PHP-users 12223] bomつきutf-8ファイルでのheaderによるリダイレクト

php-users@php.gr.jp php-users@php.gr.jp
Fri, 13 Dec 2002 01:07:23 +0900


はじめましてyo-jiと申します。

まず、空メール失礼いたしました。
さっそくですが質問をさせていただきます。

環境(OS:win2k, webサーバ:Apache1.3.23, php4.3.0RC2)
別環境(OS:VineLinux, webサーバ:Apache1.3.27, php4.2.3)
どちらでも試しました。

件名にも書きましたが、BOMつきのいわゆるUTF-8で*.phpファイルを作成し、
header関数にてリダイレクトさせたいのです。
ですがこれを行うと、
Warning:  Cannot modify header information - headers already sent by ・・・
というエラーがでてしまいます。
この意味はどうやらheader("Location:・・・・・・とやる前に
文字などが送信されているということのようだとわかりました。
さらに調べてみると、UTF-8でBOMをつけると先頭にEF BB BFというコードが入ってしまう。そのためにリダイレクトせずにエラーメッセージが出てしまうということです。
ということなのでファイルをUTF-8Nで保存してためしてみると正しくリダイレクトされました。

これはUTF-8を使用してはならないということなのでしょうか?
それともPHPのheader関数のバグなのでしょうか?

調査している過程でRFC的にはUTF-8Nを使うのが普通という記述も少し見かけました。

結局どういうことなのかが疑問だったので投稿させていただきました。
詳しい方おりましたらなにとぞご教授お願いします。