現在サーバーをレンタルしてホームページを作っているのですが、
今回サーバーの契約を変更したことにより、
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が分かりません。

どなたか教えていただけないでしょうか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

> 文字化けではなく、まったくデータを引っ張ってきていないようです。




ということなら、文字コードの問題じゃなくて
サーバーが、register_globalsがONからOFFに替わっているが
ONが前提のPHPコーディングになってて、$_POST[~]や$_GET[~]のデータを取り込めてない
という可能性は?
    • good
    • 0
この回答へのお礼

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

色々試した結果、
TeraPadで【漢字/改行コードを指定して保存】を
これまでEUCだったのをUTF-8にするだけで全て解決できました!

考えてくださってありがとうございました!!
もっと勉強します!

お礼日時:2011/04/14 14:03

phpinfoなりで以下の項目も確認してください。


・output_buffering
・output_handler
・mbstring.detect_order
・mbstring.http_input
・mbstring.http_output
・mbstring.internal_encoding
・HTMLでの文字コード設定(META)
    • good
    • 0
この回答へのお礼

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

色々試した結果、
TeraPadで【漢字/改行コードを指定して保存】を
これまでEUCだったのをUTF-8にするだけで全て解決できました!

考えてくださってありがとうございました!!
もっと勉強します!

お礼日時:2011/04/14 14:03

いくつか突っ込みどころ



><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が悪さをすることが結構あるので気をつけてください。 

>メールフォームでエラーがでるようになってしまいました。

とありますが、そもそもエラーの内容を書かないと、適切なフォローは
できませんね。質問の仕方を工夫した方がよいでしょう。

この回答への補足

私の不十分な質問にご丁寧に回答ありがとうございます。

エラー内容は、
確認画面(php)のときに、メールフォーム(html)から受けた
名前や住所が出力されません。
文字化けではなく、まったくデータを引っ張ってきていないようです。

これまでPHPの初期文字コードが【EUC-JP】だったときは何も問題なく動作していたので、今回文字コードが【UTF-8】になったのが原因だと思うので、phpの内部文字エンコーディングをEUCに設定すれば良いと単純に思って
>mb_internal_encoding("EUC-JP");
と設定しました。

知識が浅いため、質問することすら上手にできず、
申し訳ございません。

補足日時:2011/04/13 16:47
    • good
    • 0
この回答へのお礼

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

色々試した結果、
TeraPadで【漢字/改行コードを指定して保存】を
これまでEUCだったのをUTF-8にするだけで全て解決できました!

考えてくださってありがとうございました!!
もっと勉強します!

お礼日時:2011/04/14 14:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング