• 締切済み

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が分かりません。 どなたか教えていただけないでしょうか? よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数3

みんなの回答

回答No.3

> 文字化けではなく、まったくデータを引っ張ってきていないようです。 ということなら、文字コードの問題じゃなくて サーバーが、register_globalsがONからOFFに替わっているが ONが前提のPHPコーディングになってて、$_POST[~]や$_GET[~]のデータを取り込めてない という可能性は?

ba-shi-
質問者

お礼

回答ありがとうございました。 色々試した結果、 TeraPadで【漢字/改行コードを指定して保存】を これまでEUCだったのをUTF-8にするだけで全て解決できました! 考えてくださってありがとうございました!! もっと勉強します!

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

phpinfoなりで以下の項目も確認してください。 ・output_buffering ・output_handler ・mbstring.detect_order ・mbstring.http_input ・mbstring.http_output ・mbstring.internal_encoding ・HTMLでの文字コード設定(META)

ba-shi-
質問者

お礼

回答ありがとうございました。 色々試した結果、 TeraPadで【漢字/改行コードを指定して保存】を これまでEUCだったのをUTF-8にするだけで全て解決できました! 考えてくださってありがとうございました!! もっと勉強します!

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

いくつか突っ込みどころ ><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が悪さをすることが結構あるので気をつけてください。  >メールフォームでエラーがでるようになってしまいました。 とありますが、そもそもエラーの内容を書かないと、適切なフォローは できませんね。質問の仕方を工夫した方がよいでしょう。

ba-shi-
質問者

お礼

回答ありがとうございました。 色々試した結果、 TeraPadで【漢字/改行コードを指定して保存】を これまでEUCだったのをUTF-8にするだけで全て解決できました! 考えてくださってありがとうございました!! もっと勉強します!

ba-shi-
質問者

補足

私の不十分な質問にご丁寧に回答ありがとうございます。 エラー内容は、 確認画面(php)のときに、メールフォーム(html)から受けた 名前や住所が出力されません。 文字化けではなく、まったくデータを引っ張ってきていないようです。 これまでPHPの初期文字コードが【EUC-JP】だったときは何も問題なく動作していたので、今回文字コードが【UTF-8】になったのが原因だと思うので、phpの内部文字エンコーディングをEUCに設定すれば良いと単純に思って >mb_internal_encoding("EUC-JP"); と設定しました。 知識が浅いため、質問することすら上手にできず、 申し訳ございません。

関連するQ&A

  • php.iniを変更したのにUFT-8が文字化け

    こんにちは。教えて下さい。 Movable TypeをUTF-8で運営しようと思いましたが、使用中のサーバーのphpの文字コードがEUC-JPでした。 サーバーに問い合わせたところ、php.iniを編集するだけで文字コード変更できます、とのこと。 そこで、php.iniの mbstring.language = Japanese mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.internal_encoding = EUC-JP mbstring.detect_order = auto mbstring.substitute_character = none; を mbstring.language = neutral mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.internal_encoding = UTF-8 mbstring.detect_order = auto mbstring.substitute_character = none; にしてみました。 当方初心者で、php.iniは初めていじりました。 EUC-JPとあった箇所またはJapaneseとあった箇所を変更したのみです。 また、Movable Typeのmt-config.cgiで 文字コードをEUC-JPからUTF-8に変更。 Movable Typeの文字コード関連の変更はこのファイルのみですのでこれで大丈夫・・・。 そう思ったのですが、Movable Typeが文字化け・・・。 php.iniの設定が間違っているのでしょうか? 助けてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP フォームからのデータが文字化け

    PHPにて簡単な以下のようなアプリを勉強がてら作っています。 1.登録フォームを表示 2.確認画面表示 3.DB(MySQL)にデータ登録 そこで質問なのですが、フォームから入力し確認画面を表示するときに、フォームから入力した文字が文字化けしてしまいます(正確には文字化けする時としない時があります)。 出力ページはSmartyを使っています。 テンプレートはUTF-8を使っており、テンプレート内の文字は文字化けしません。PHPソースもUTF-8で書いてあります。 各PHPソースには mb_language("uni"); mb_internal_encoding("UTF-8"); mb_http_output("UTF-8"); と記述しています。 DB(MySQL)のテーブルはUTF-8にしてあります。 1点気になるのは、某ホスティングサービス上で作っているのですが、PHPinfoで見てみるとmb_internal_encodingはEUC-JPになっています。 今回UTF-8で作りたいのですがどうしたら良いのでしょうか? 環境は、 Apache 1.3.34 / PHP 4.3.7 / MySQL 4.1.21 です。 アドバイスお願いいたします。

    • ベストアンサー
    • PHP
  • PHP 文字コードについて

    以下のような環境のホスティングサーバでSmartyを使い簡単なアプリを作っています。 サーバ PHP Version 4.3.7 phpinfoの値 mbstring.detect_order auto mbstring.encoding_translation On mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding auto mbstring.substitute_character no value 今回、PHPソースはUTF-8、HTML(Smartyテンプレ)もUTF-8で作っています(作りたいです)。 この様な場合、PHPスクリプトに「ini_set」を記述するのが良いのか、又は$_POST等で受け取ったときに毎回「mb_convert_encoding」記述するのが良いのか、その両方か、アドバイスを頂きたいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPにてメールフォームで文字化け

    今、会社のHP用でメールフォームをphpで作成しています。 「入力」→「確認」→「送信」 でsession関数を使って作成しているのですが確認画面で文字化けしてしまい、送られてくるメールも文字化けしてしまい困っています。 エンコードの間違い?と思って mb_language("ja"); mb_internal_encoding("SJIS"); でやっているのですがこれだけではいけないのでしょうか? 個人で借りているサーバーで試したところうまくいったのですが、会社の借りているサーバーだと文字化けしてしまう状態です。 ちなみに個人で借りているのはロリポップで 会社のサーバーはphp4まで対応しています。 わかりにくい質問ですがよろしくお願いします。

    • 締切済み
    • PHP
  • PHPのParse errorについて質問

    昨日より、特に変更はしていないのに、 Parse errorとしてエラーになります。 エラーが発生するPHPは、EUC_JPで記述したもののみです。 例)php.iniで記述 mbstring.internal_encoding = SJIS と設定しており、EUCで記述したスクリプトのある ディレクトリには.htaccessで php_value mbstring.internal_encoding EUC と設定。

    • ベストアンサー
    • PHP
  • 文字コードについて

    現在、PHP(EUC-JP)でプログラムを作成し、テンプレートはS-JISで表示しています。 テンプレートには下記のようにリンク先をはっています。 <a href="REPLACE">NAME</a> REPLACEとNAMEはPHP側で作成した値を置き換えています。 NAMEはmb_convert_encodingでEUC-JPをS-JISに変更していますが、リンク先には日本語の文字が含まれています。 私が、考えたものは次に遷移したいPHP以下をエンコードし、それをmb_convert_encodingするというものです。 $url="test.php?ID=".$stData[$i]['id'].&gStationName=".$stData[$i]['name']; $url_encode=urlencode($url); $all_data['test'] = mb_convert_encoding($url_encode, "SJIS", "EUC-JP"); このリンク先にカーソルをあてると、日本語はアラビア文字みたいなのが、表示されます。 しかし、このリンクをクリックすると、エンコードされたURLが表示されます。 なぜ、このような現象が起こるのでしょうか? ご教授ください。

    • ベストアンサー
    • PHP
  • PHPでのメール差出人名について

    PHPでのメール差出人名について PHPのmb_send_mailでメール送信プログラムを書いています。 メールは送信されるのですが、メーラーで確認すると 差出人名(送信者)がうまく表示出来ません。 具体的には、 『▲▲サイトより送信』と表示させたいのですが、 『▲▲サイトより送信@レンタルサーバのドメイン名』 と表示されてしまいます。 下記がソースになるのですが、有識者の方いらっしゃいましたら ご教授よろしくお願いします。 -------------------------------------------- //送信設定 mb_language("japanese"); mb_internal_encoding("euc-jp"); $from = mb_encode_mimeheader(mb_convert_encoding("▲▲サイトより送信","JIS","euc-jp")); $head = "From: {$from}" . "\r\n" . 'X-Mailer: PHP/' . phpversion(); //送信実行 mb_send_mail($mail_to, $title, $message, $head);

    • ベストアンサー
    • PHP
  • PHPのメールフォーム文字化けについて

    PHP超初心者です。 前任者が退職し、急きょWEBを引き継ぐことになりました。 現在稼動中のサイトのメールフォームは、PHPで処理を行っているのですが、 フォーム入力後に表示する入力確認画面及び送信メールで、 日本語が文字化けを起こしてしまいます。 PHP内に記述されているのは、 if(phpversion() < "4.1.0"){ $_GET = $HTTP_GET_VARS; $_POST = $HTTP_POST_VARS; $_SESSION = $HTTP_SESSION_VARS; } なのですが、レンタルサーバーのPHPバージョンは5.2.8です。 言語及び内部エンコーディングは、 mb_language('Japanese'); mb_internal_encoding(UTF-8); と設定してありますので、文字化けはバージョンの違いによるものではないかと考えているのですが、なにぶん初心者でどのように修正をかければよいのか分かりません。 尚、動作には問題はありません。 初歩的な質問で大変恐縮ですが、どなたかご回答よろしくお願いいたします。 (初心者向けの分かりやすい回答でお願いします)

    • 締切済み
    • PHP
  • mb_send_mailでの文字化け

    PHPでメールフォームの設置中ですが、OutlookEXで受け取ったメール本文の一部が ?絅螢謄・κ(中略)? と,クエスチョンマークをはさんだ文字に化けてしまいました。 文字コードはEUCに統一し、 mb_internal_encoding("EUC"); mb_language("Japanese"); $from_name2 = i18n_mime_header_encode( i18n_convert($from_name, "JIS") ); を入れて、その後に、mb_send_mail();しています。 なにか解決のヒントがありませんでしょうか。 また、この文字化けしてしまった文字を復活する方法はないでしょうか。

    • 締切済み
    • PHP
  • フォームメールの文字化け

    こんにちは。 フォームメールで携帯宛にメールを送ると、docomoの件名だけが文字化けします。 途中までは正常な表示で、後半文字化けしたり要らない文字が最後に入ったりという状態です。 au、softbankやPC宛には正常に送れているのですが… エンコーディングは↓こんな感じです mb_language("Japanese"); mb_internal_encoding("EUC-JP"); $subject = mb_convert_encoding($subject,"JIS", "EUC-JP"); 考えられる原因や解決方法などありましたら 教えて下さい。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう