• ベストアンサー

multipart/form-dataの文字化け

いつもお世話になっております。 画像のアップロードと同一フォームにテキスト入力項目があるのですが、submitするといくつかの文字が文字化けを起こします。(望とか) 色々調べて試してみたのですが対策が見つかりません。 FreeBSD PHP 4.3.3 レンタルサーバ です。 情報が足りないと思うのですが、どこまで書いていいのか分かりませんので補足が必要でしたら、補足要求いただければ幸いです。 何卒よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.1

http://www.php.net/manual/ja/ref.mbstring.php#mbstring.http にも書いてありますが、PHP 4.3.3 より以前であれば HTMLフォームの enctype が multipart/form-dataに 設定された場合、エンコードの変換を行ってくれません。 q-tip さんがお使いのサーバですと 4.3.3 との事ですので 変換してくれるはずなんですが、PHP-user でも話題が あったように、configure の違いとか設定の違いで 変換してくれないことがあるようです。 いずれにせよ、文字化けが起きるとのことですので $code = mb_convert_variables(mb_internal_encoding(),implode(",",mb_detect_order()),$_POST); if(isset($_FILES) ) { foreach( $_FILES as $key => $val ) { mb_convert_variables(mb_internal_encoding(),$code,$_FILES[$key]); } } のようなに mb_convert_variables() を使って エンコード変換するとか、 $_POST['data1'] = mb_convert_encoding($_POST['data1'], 'EUC-JP'); 単純に必要な POST データを逐一変換する必要が あるかと思います。

参考URL:
http://www.php.net/manual/ja/ref.mbstring.php#mbstring.http
q-tip
質問者

お礼

ご回答ありがとうございます。 下は前に試していましたので、上の方を試してみたのですが、やはりだめです。 submitすると入力されたデータが空になってしまいます。 この現象が起こるのはサーバ上の問題なのでしょうか? 今のところ発覚しているのは"望"がからむ時だけなのですが、他に対策がございましたら、よろしくお願いいたします。

関連するQ&A