ソースがUTF8、出力がSJISの場合のフォームでの受け渡しについてです。
携帯サイトの入力フォームを作成しています。ソースはUTF8で作成しています。
HTML出力時にはSJISで出力しています。
確認画面で、入力チェックを行い、未入力があれば入力画面に戻す流れなのですが、
確認画面の処理の最初で、フォームから受け取った情報($_POST)をUTF8に変換しています。
(これが正しいと思っています)
実際のサーバ上では、この流れでうまくいっているのですが、ローカル(windows)では、
変換すると文字化けしてしまい、変換しないほうが正常に動作します。
(まるでフォームから送られてきた情報が元々UTF8だったような動作をします)
とりあえずは、ローカルでは変換部分をコメントアウトし、サーバにアップする時に
コメントを外していますが、どこかの設定を操作すれば、ローカルとサーバで
同じ挙動になるのではないかと思うのですが・・・どうしていいか分かりません。
ローカルの環境は
windows7 home edition 32bit
PHP Version 5.2.9-1
Apache/2.2.10 (Win32)
Directive Local Value Master Value
mbstring.detect_order auto auto
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output UTF-8 UTF-8
mbstring.internal_encoding UTF-8 UTF-8
mbstring.language Japanese Japanese
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value
です。
サーバ側は
Linux(詳細不明)
Apache(おそらく2系)
PHP Version 5.2.5
Directive Local Value Master Value
mbstring.detect_order auto auto
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output pass pass
mbstring.internal_encoding UTF-8 UTF-8
mbstring.language Japanese Japanese
mbstring.strict_detection Off Off
mbstring.substitute_character no value no value
php.ini等をいじることなく、.htaccessやphpのソース上に何らかの
記述をすることで解決できるとうれしいです。
お礼
ありがとうございます。無事解決しました。PHPにはそんな機能があったんですね。