[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