- 締切済み
PHP初期文字コードの変更に伴うエラーについて
現在サーバーをレンタルしてホームページを作っているのですが、 今回サーバーの契約を変更したことにより、 PHPの初期文字コードが【EUC-JP】から【UTF-8】に変更になりました。 これまでページ内で使っていたPHPのメールフォームでエラーがでるようになってしまいました。 構成としては、 mail.html(入力)→mail.php(確認画面&送信完了画面)と、 htmlからphpにデータを渡しています。 メールフォームの入力画面がから確認画面へいくとき、 名前や住所など、nameが日本語のものが表示されません。 <input name="郵便番号" id="zip" type="text" value="" size="10" /> 調べてみて、phpの最初に mb_language("Japanese"); mb_internal_encoding("EUC-JP"); と記述しましたが変化はありません。 現在あるメールフォームもフリーのフォームを拝借して少しだけ カスタマイズしているので、あまりPHPが分かりません。 どなたか教えていただけないでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- superside0
- ベストアンサー率64% (461/711)
> 文字化けではなく、まったくデータを引っ張ってきていないようです。 ということなら、文字コードの問題じゃなくて サーバーが、register_globalsがONからOFFに替わっているが ONが前提のPHPコーディングになってて、$_POST[~]や$_GET[~]のデータを取り込めてない という可能性は?
- tany180sx
- ベストアンサー率63% (239/379)
phpinfoなりで以下の項目も確認してください。 ・output_buffering ・output_handler ・mbstring.detect_order ・mbstring.http_input ・mbstring.http_output ・mbstring.internal_encoding ・HTMLでの文字コード設定(META)
お礼
回答ありがとうございました。 色々試した結果、 TeraPadで【漢字/改行コードを指定して保存】を これまでEUCだったのをUTF-8にするだけで全て解決できました! 考えてくださってありがとうございました!! もっと勉強します!
- yambejp
- ベストアンサー率51% (3827/7415)
いくつか突っ込みどころ ><input name="郵便番号" id="zip" type="text" value="" size="10" /> nameにマルチバイト文字をつかっていいことなんか一つもありません。 name="zip"で処理しましょう。 >mb_internal_encoding("EUC-JP"); EUCだったのをUTF8にしたのですよね?だったら mb_internal_encoding("UTF-8"); じゃないですか? また、UTFにしたときにBOMはどうしていますか? php処理する際にBOMが悪さをすることが結構あるので気をつけてください。 >メールフォームでエラーがでるようになってしまいました。 とありますが、そもそもエラーの内容を書かないと、適切なフォローは できませんね。質問の仕方を工夫した方がよいでしょう。
お礼
回答ありがとうございました。 色々試した結果、 TeraPadで【漢字/改行コードを指定して保存】を これまでEUCだったのをUTF-8にするだけで全て解決できました! 考えてくださってありがとうございました!! もっと勉強します!
補足
私の不十分な質問にご丁寧に回答ありがとうございます。 エラー内容は、 確認画面(php)のときに、メールフォーム(html)から受けた 名前や住所が出力されません。 文字化けではなく、まったくデータを引っ張ってきていないようです。 これまでPHPの初期文字コードが【EUC-JP】だったときは何も問題なく動作していたので、今回文字コードが【UTF-8】になったのが原因だと思うので、phpの内部文字エンコーディングをEUCに設定すれば良いと単純に思って >mb_internal_encoding("EUC-JP"); と設定しました。 知識が浅いため、質問することすら上手にできず、 申し訳ございません。
お礼
回答ありがとうございました。 色々試した結果、 TeraPadで【漢字/改行コードを指定して保存】を これまでEUCだったのをUTF-8にするだけで全て解決できました! 考えてくださってありがとうございました!! もっと勉強します!