[PHP-dev 1075] Re: PHP5.0.0 にて同一の内容を送信すると「た

komura komura @ ma9.seikyou.ne.jp
2004年 12月 29日 (水) 16:50:43 JST


komura です。

PHP 4.3.10 で Patch を適用して、検証してみました。

今回の mb_internal_encoding() による内部文字コード変更がリクエストを
超えて文字コードの自動変換に影響を及ぼすという問題は Patch により
解決したように思います。


On Wed, 29 Dec 2004 14:37:22 +0900
Yusuke Ando <ando @ rikezemi.com> wrote:

> パッチ作成お疲れ様です。
> 早速適用して、以前の設定で動かしてみました。
> 
> 「たまに」化けるという症状、つまりはリクエストごとの結果が安定しない症状
> は発生しないようです。
> #安定した文字化けが起こるといいますか・・・。

安定した文字化けというのは、文字列が mbstring.internal_encoding
で設定した文字コードになってしまうという事でしょうか?

今回では、mbstring.internal_encoding = UTF-8 ということになって
いましたので、Patch により、リクエストの文字列(POST, GET)などの
文字列が必ず UTF-8 に変換されるようになったと思います。

スクリプト内での mb_internal_encoding("SJIS") の実行により、
リクエストの文字列が SJIS に変換されるということを期待して
おられるのであれば、そのようにはならないため、文字化けが
起きたように見えることになります。


> その他のmb全般にとって望ましい挙動となっているかどうかは他の方の検証結果
> によるかなと思います。

望ましいのかどうかは分かりませんが、内部エンコードの変更を
行うごとにリクエストの文字列の文字コードを変換するのは非効率
のように思います。

必要に応じて、mb_convert_encoding() や mb_convert_variables()
を使用し、HTTP リクエストの文字列をスクリプト側で使用している
文字コードに変換するという方が良いのではないでしょうか。


他の方の投稿にもありましたが、私も自動変換は使用しない方が
良いと考えています。

短い文字列の場合、文字コードの検出に失敗する可能性があり、
間違った文字コードとして検出され、変換が行われた場合、
PHP スクリプト側では対処できません。

-- 
komura <komura @ ma9.seikyou.ne.jp>


PHP-dev メーリングリストの案内