[PHP-users 6184] Re: phpinfo() での画像表示ができない
KOYAMA Tetsuji
php-users@php.gr.jp
Fri, 15 Mar 2002 01:41:48 +0900
小山です。
At Fri, 15 Mar 2002 01:20:36 +0900,
Tanaka Hitoshi wrote:
> > output_handler =
> >
> > にするとどうなりますか?
>
> ありがとうございます。原因はこれでした。
こちらでもいろいろ試してみたのですが、mb_output_handler を、
・php.ini に書いてデフォルトハンドラにした場合
・スクリプト内で ob_start('mb_output_handler') した場合
で挙動が違ってきますね。
output_handler = mb_output_handler を php.ini に書いた場合
<?php
mb_http_output('pass');
phpinfo();
?>
ならば、出力画像にコード変換は適用されずきちんと表示されそうに思えます
が、実際には表示されません。
output_handler = の場合
<?php
mb_http_output('SJIS');
ob_start('mb_output_handler');
phpinfo();
?>
だと、phpinfo() の出力画像にもコード変換が適用されてしまい表示されない
ように思えますが、実際には表示されます。
私が何か勘違いしているのか、どうもこの挙動は不可解に思えます。
> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
>
> なPHPスクリプトを含むHTMLとして出力させるときに文字化
> けしてしまいます。やはり
>
> output_buffering = Off
> default_charset = EUC-JP
> mbstring.http_input = auto
> mbstring.http_output = EUC-JP
> mbstring.internal_encoding = EUC-JP
> mbstring.substitute_character = none
>
> としてデフォルトではEUCを使うのが常套手段でしょうか。
私は
・php で吐く HTML には <meta http-equiv=...> はつけない
・mbstring.http_output = SJIS
・php スクリプト内で、必要な場合に明示的に
ob_start('mb_output_handler'); を呼び出す
という方針でやっています。
--
小山 哲志@ビート・クラフト
koyama@beatcraft.com
koyama@hoge.org