- ベストアンサー
multipart/form-dataの文字化け
いつもお世話になっております。 画像のアップロードと同一フォームにテキスト入力項目があるのですが、submitするといくつかの文字が文字化けを起こします。(望とか) 色々調べて試してみたのですが対策が見つかりません。 FreeBSD PHP 4.3.3 レンタルサーバ です。 情報が足りないと思うのですが、どこまで書いていいのか分かりませんので補足が必要でしたら、補足要求いただければ幸いです。 何卒よろしくお願いいたします。
- みんなの回答 (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 データを逐一変換する必要が あるかと思います。
お礼
ご回答ありがとうございます。 下は前に試していましたので、上の方を試してみたのですが、やはりだめです。 submitすると入力されたデータが空になってしまいます。 この現象が起こるのはサーバ上の問題なのでしょうか? 今のところ発覚しているのは"望"がからむ時だけなのですが、他に対策がございましたら、よろしくお願いいたします。