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

Seiji Masugata s.masugata @ digicom.dnp.co.jp
2004年 12月 9日 (木) 15:14:43 JST


こんにちわ、桝形@臨界点間近です。

> http://chbox.com/php/posttest.php
> #同じ「ちゃばこ」をPOSTで送信しても化ける時と化けない時がある
> 
> 変換をするにせよ、同じ内容で実行しても結果が安定しないので方針が立てづら
> いところです。化けるなら化けるで必ず化けてくれればまだいいのですが。
> 
> お時間のある型がおられましたら初投稿時に引用したスクリプトをPHP5上で実行
> してもつねに同じ結果が得られるのかを伺ってみたいところです。

気になったので確認してみました。

「DELL Optiplex GX270」「RedHat9(PHP5.0.2)」な環境ですが
同様に現象発生しますねぇ。

オブジェクトを利用しなくても現象は確認できました。
(クラス記述を削除して関数のみにした)

気になったのが、

		mb_internal_encoding( "SJIS" );

を、コメントアウトしたり、"UTF-8"とか記述すると現象は出なく
なりました(内部コードと違う場合は現象は出る模様)。

という訳で、

mbstring.encoding_translation
mbstring.http_input

を定義していて、更に動的にmb_internal_encodingを変更した時の
挙動が怪しいのでは、と感じました。

# mbstring.http_inputをpassにすれば現象は出ないようでした。

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = UTF-8,UTF-7,SJIS-win,SJIS,eucJP-win,EUC-JP,ISO-2022-JP,JIS,ASCII
mbstring.substitute_character = 0x3013;
mbstring.func_overload = 1
mbstring.script_encoding = SJIS

とりあえずの逃げの一手は、自動変換を無効でしょうか?
(代わりにauto_prepend_fileの機能を有効にして強制的に)
(変換処理をカマすとか・・・。)

--
Seiji Masugata<s.masugata @ digicom.dnp.co.jp>




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