[PHP-users 8440] レスポンスヘッダを出力すると自動変換してくれない

桝形 誠二 php-users@php.gr.jp
Fri, 05 Jul 2002 18:12:25 +0900


こんばんわ、桝形です。

レスポンスヘッダを出力すると自動変換してくれない現象に
出くわしました。

色々試した結果を報告します。

[mbstring関連の設定]

output_buffering = Off
output_handler = 
mbstring.internal_encoding    = EUC_JP
mbstring.http_input           = auto
mbstring.http_output          = SJIS
mbstring.detect_order         = auto
mbstring.substitute_character = auto
;mbstring.script_encoding      = Shift_JIS

テストスクリプト( ソースコードはEUCで記述 )
<?
// サーバの内部コードはEUCだけど、出力はSJISの設定
// レスポンスヘッダの指定でSJISを指定
header( "Content-Type: text/html; charset=Shift_JIS" );
mb_http_output( "SJIS" );
ob_start( "mb_output_handler" );
echo "[レスポンスヘッダで議論中。。。]";
phpinfo( );
?>

【結果】

○:文字化けしない
×:文字化けしている

化けるというより自動変換していないような挙動。
EUCのまま出力されているようです。
自動変換しないような仕様に変更されたのでしょうか?

┌──────┬───┬────┐
│ バージョン │ 本家 │ 国際化 │
├──────┼───┼────┤
│ 4.1.2      │ ○   │ ○     │
├──────┼───┼────┤
│ 4.2.0      │ ※1 │ ※1   │
├──────┼───┼────┤
│ 4.2.1      │ ×   │ ×     │
└──────┴───┴────┘

※1
header( "Content-Type: text/html; charset=Shift_JIS" );
を指定するとトんでもない結果になりました。
phpinfoも表示されない、変数も出力されない。
はずすと正常に表示するようになりました。

という結果になりました。

当MLのアーカイブ、Google等で探しているのですが、
似たような事例を見つける事ができませんでした。

http://ns1.php.gr.jp/pipermail/php-users/2002-April/007075.html
が怪しいのかなぁ。。。という記事を発見しました。
ただ、PHP 4.2.0-devコミットしたとの報告があったので
これじゃないのかなぁ?と確証をつかめません。

【環境】

OS     : Redhat Linux6.2J
Apache : 1.3.26

クライアントの環境はWindowsとか普通のWebブラウザです。

説明不足や足りない情報があるかもしれませんが、
何かお気づきの点がありましたら、ご指摘願います。
_______________________

   桝形 誠二( Masugata Seiji )
   E-Mail : s.masugata@digicom.dnp.co.jp

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄