[PHP-users 31423] Re: PHP5.2.0でmultipart/form-dataを使用すると文字化け

nakamura @ from.co.jp nakamura @ from.co.jp
2007年 2月 7日 (水) 16:25:15 JST


中村です。

うしろさんお返事ありがとうございます。
たまたまPHP4.3.9の環境もあったので試してみましたが、こちらでは文字化けし
ませんでした。ちなみにApache1.3.33です。うーむ。

> 文字コード変換が行われていないという事ですね。
> どんな文字でテストしているか教えて頂けますか。

そうですね。
テストしている文字は「あいうえお」、「美乳」などばらばらです。
文字数が短すぎないように長めの文字を入力しても同じです。

以下1〜3まで変更をphp.iniへ加え、そのたびにApacheを再起動して
確認しましたが同じく文字化けしました。Apache2.2.3 + PHP5.2.0です。

1.mbstring.strict_detection = On を追加
2.mbstring.http_input = SJIS に変更
3.mbstring.detect_order = SJIS に変更

いずれにしてもformタグから enctype="multipart/form-data" を削除すると文
字化けはしません。なので文字コードの誤検知は考えにくいように思います。

> 誤検知で変な変換が行われてしまった時に、取り返しが
> つかなくなるので、自分は使わないようにしています。
> (プログラムで明示的に変換してから利用)

以前からメーリングリストでそのようなご指摘は見ていたのですが、やはりその
方が良さそうですね。PHP5.2.2-devでも私の環境では再現したので今後のことも
考えてプログラム内で変換する方向で進めたいと思います。

ありがとうございました。

P.S.
1点訂正させて下さい。

> 確かPHP4.2.3あたりまでは自力でエンコード処理はしなくてはいけなかった記憶
> はあるのですが

これはPHP4.3.2まででしたね。失礼しました。
http://jp.php.net/manual/ja/ref.mbstring.php


----------
中村
y-nakamura @ from.co.jp



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