[PHP-users 11042] Re: mb_output_handler の動作について

Yasuo Ohgaki php-users@php.gr.jp
Wed, 23 Oct 2002 05:05:12 +0900


大垣です。

Rui Hirokawa wrote:
> 廣川です。
> 
> たしか、バイナリデータ出力時に mb_http_output("pass")とする必要がある
> のを省力化するため、header関数でContent-Type: ヘッダを出力した場合、
> には変換がオフになるようにされていると思います。
> (ただし、hdml等、Content-Type: text/* の場合には変換される。)

言われて、思い出しました :)
# ソースを見ないlazyプログラマで失礼します。

> 従来のmb_http_output("pass")のみの仕様の方がシンプルで良いかとも
> 思いますが、上記の仕様もそれなりに便利なので、迷うところです。

Content-Type: image/* 等で変換する仕様が正しいとは言えません。
text/* で変換、他は無変換と言う仕様も理にかなっていますね。

> 
> 基本的には、マニュアルの記述を見直して上記の仕様に基づくものと
> するという方向でしょうか。

application/cvsなどでは多少面倒ですが、このままの仕様でマニュ
アルの修正が良いと思います。

mbstringがデフォルトはビルドされるので慣れていないユーザーには
現在の仕様の方がトラブルが少ないと思います。

# 「イメージが壊れる」と山のようなバグレポートが登録される事は
# 確実に防げますね。

--
Yasuo Ohgaki

> 
> On Tue, 22 Oct 2002 15:27:45 +0900
> Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
> 
> 
>>大垣です。
>>
>>Mashiki wrote:
>>
>>>>注意 イメージのようなバイナリデータをPHPスクリプトから
>>>>出力したい場合、 mb_http_output()を用いて出力エンコーデ
>>>>ィング を"pass"にし、変換を無効とする必要があります。 
>>>
>>>
>>>の仕様のほうが4.1.xとの互換性も有り、かつストレートだと
>>>おもうのですが。いかがでしょうか。
>>
>>たしかにそうなのですね。
>>
>>自分が書いたコメントからすると、Content-Type: text/hdml
>>等とすると、全く出力できないと言うのは困るのでとりあえず出力
>>できるようにした、っぽいですね。この動作は変更される可能性があ
>>る、と書いているくらいですから。
>>
>>もしかすると、もともとのコードがContent-Type:(または
>>charset?)を設定したらエンコーディング変換をしない、と言う事
>>だったのではないかと推測しています。
>>
>># 昔の事すぎて、全然覚えていません。パッチからするとクラッシュ
>># を直しただけのようです。(hunk #2)
>>
>>http://cvs.php.net/diff.php/php4/ext/mbstring/mbstring.c?r1=1.48.2.4&r2=1.48.2.5&ty=u&Horde=2acfeb96b9551fec42c1058dd6189e8d
>>
>># 今、改修する時間がありませんが、どうしましょう?
>>
>>--
>>Yasuo Ohgaki
> 
> 
>