[PHP-dev 225] Re: [PATCH] improved multibyte patch for PHP 4.1.*

Masaki Fujimoto php-dev@php.gr.jp
Thu, 24 Jan 2002 10:00:40 +0900


ふじもとです。

On Thu, 24 Jan 2002 01:27:05 +0900
Tomoyuki Asakawa <tom@asakawa.ne.jp> wrote:
-snip-
> > - どういう現象が発生するか
> 
> 文字化けする、表示されない(ブラウザでソース表示してもでない)
> 
> mbstring.http_outputを未定義にすることが、悪いのですが。
> 未定義ならPASSと同じ動作の方がいいのではないでしょうか

ありがとうございました。ようやく僕も状況を理解することが出来まして、こち
らでも再現しました。どうやらmbstring.http_outputのデフォルト値が
mbfl_no_encoding_invalidになっていて、しかもmb_output_handlerでは
mbfl_no_encoding_pass以外の時はconvertするようになっているからのようです
ね。

で、internal_encoding -> mbfl_no_encoding_invalidに変換(?)しようとしてお
かしなことになっているようです(未検証なのであくまで推測です)。

やはりあさかわさんのおっしゃるようにhttp_output未定義時はpassにするか、
http_outputがinvalidのときはmb_output_handlerの処理をpassと同様にするか、
もしくは両方の対応を採ったほうがいいとおもいます。

とはいっても僕はmbstringのkarmaを持っていないのでこの議論は他の開発者の
方にお任せします(と、逃げを打つ:D)。

> 以下は問題点ではなく確認ですが
> 
> output_buffering = Off
> mbstring.script_encoding = SJIS
> mbstring.http_output = EUC
> mbstring.internal_encoding = SJIS
> 
> で正常に表示するということは
> 
> zend-multibyteは、output_bufferingとは無関係
> だということですね。

そうです。今回のパッチはoutput関連には全く噛んでいません。なので変だなー
とおもっていたのです。

--
藤本 真樹

アストラザスタジオ
fujimoto@studio.co.jp