[PHP-users 11023] mb_output_handlerの動作について
Mashiki
php-users@php.gr.jp
Tue, 22 Oct 2002 13:05:39 +0900
Mashikiです。
同じようなメールを続けて投げてしまい大変恐縮なのですが、
もうひとつ質問させてください。
php4.1.2からphp4.2.2にバージョンアップした結果、以下のコード
【問題のコード testEUC.php】
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<?php
header("Content-type: application/csv"); // ★
header("Content-Disposition: attachment; filename=\"sjis.csv\"");
$fp=fopen('euc.txt','r'); //EUCのファイルをオープン
fpassthru($fp);
?>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
で、4.1.2では行われていた、mb_output_handlerによるエンコーディング
変換が4.2.2では行われなくなりました。
(★の行をコメントアウトするとエンコーディング変換は行われます)
ちなみに内部エンコーディングをEUC、HTTP出力をSJISとしています。
マニュアルには、header()でContent-Typeが設定されているかにより、
charset HTTP ヘッダを設定するとは記述されているですが、
エンコーディング変換の有効/無効を左右するようには読み取れないの
ですが、どなたか情報をいただけないでしょうか。
一応は、スクリプトの頭でアウトプットバッファリングをオフにし
自前でSJIS変換をかけて出力すればどちらでも動くスクリプトが書けるの
ですが、根本的な原因がわからず、少々不安です。
【関連するphp.ini設定】
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
output_buffering 1
output_handler mb_output_handler
mbstring.detect_order auto
mbstring.http_input auto
mbstring.http_output SJIS
mbstring.internal_encoding EUC-JP
mbstring.substitute_character no value