PHPフォームメールが文字化けする原因と解決方法とは?

このQ&Aのポイント
  • PHPを使ったフォームメールが文字化けする問題について解説します。
  • 文字化けの原因は文字コードの設定不足です。
  • 解決方法として、PHPファイルに適切な文字コードを記述する必要があります。
回答を見る
  • ベストアンサー

PHPを使ったフォームメールが文字化けしてしまう

PHP初心者ですが、設置が簡単ということで、メールフォーム(埋め込み型)を使おうとしているのですが、その部分だけ文字化けしてしまいます。 http://aichan.mbsrv.net/ai/mailform/ メールフォーム配布サイト(こちらで配布されているものを使用しています) http://www.keitai-site.net/php/mailform_php/ 解決しようといろいろ調べたところ、文字コードをPHPファイルに記述すればよい、ということがよく書かれていました。しかしその方法が自分にとって、どうすればよいのかがわからず、こちらで質問させていただいています。 どのようにすればよいでしょうか?アドバイスいただけますでしょうか。 よろしくお願いいたします。

  • ai_3
  • お礼率75% (6/8)
  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • bis_love
  • ベストアンサー率80% (4/5)
回答No.3

補足です。 メールフォーム配布サイトからダウンロードしてみましたが、 mailhtkt100フォルダの中には index.php (読み込み元) mailhtkt.php (メールフォーム本体) qdmail.php (メール送信用に使っているライブラリですのでこの質問には関係ありません) readme.txt (readmeファイルですのでこの質問には関係ありません) の4つのファイルがありますが それぞれ文字コードが index.php SJIS mailhtkt.php SJIS になっています。 おそらく、ai_3さんの読み込み元ファイルの文字コードはUTF-8で記述されているのではないでしょうか。 埋め込むプログラムがSJISで書かれているので、読み込み元も同じ文字コードSJISにしてください。 その上で<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />を <meta http-equiv="Content-Type" content="text/html; charset=shift-jis" />のようにヘッダーも修正します。 文字コードの変更の仕方は先ほど回答したとおりです。秀丸などのテキストエディタで一度ファイルを開いてSJISで保存してください。(簡単な図も用意しました) また、どうしてもUTF-8でページを作りたい、というのであれば index.php UTF-8 mailhtkt.php UTF-8 というように埋め込むプログラム、読み込み元プログラムの文字コードをそろえれば文字化けせずに動くはずです。 (私の方で動作確認しました。メールの送信までは確認できていませんが) ただ、このプログラムは携帯サイト対応とのことですが携帯サイトは基本的にSJISしか無理なはずです。 (ai_3さんの作ろうとしているサイトが携帯対応でないなら関係ないかもしれませんが・・) 蛇足ですが携帯の文字コード対応のリストを書いたサイトがありますのでURLをお知らせしておきます。 http://gihyo.jp/dev/serial/01/mobilesite-php/0003

ai_3
質問者

お礼

bis_loveさん、できました~!! うれしいです。本当にありがとうございます。 今まで右下の表示なんて見てなかったけど、確かに「UTF-8」とかありました。私はずっとメモ帳でHTMLを書いていたのですが、去年あたりから無料のTeraPadを使っています。それで、こういうエディタではmetaタグを書き換えるだけではだめなのだと初めて知りました。図で説明してくださったのとほぼ同じやり方で、エンコードができるようになっていました。 そして、浅い知識なくせにこれからはUTF-8で作るのがベストなのかな、って思いこんでいました。携帯サイトも考慮するなら、なにがいいって、一概に決められないんですね。携帯表示もできるようにしたいと思っているので、メールフォームはSJISで作成したいと思います。 こんなにご親切にしていただいて、勉強にもなり、本当に感謝の気持ちでいっぱいです。ベストアンサーとお礼だけじゃ伝えきれないです。 ありがとうございました☆

その他の回答 (2)

  • bis_love
  • ベストアンサー率80% (4/5)
回答No.2

ページ全体のスクリプトがUTF-8になっているのではないでしょうか。 秀丸やサクラエディタなどのテキストエディタでファイルを開いてみてください。 そういったソフトでファイルを開くと右下にSJISやUTF-8なんかが書いてあると思います。 そういったテキストエディタで開きなおし、SJISで開きなおす。というコマンドがソフトにありますのでそうしてみてください。 もしくは一度スクリプトを開いて、Ctrl+Aなどで全選択してメモ帳などに貼り付けてもう一度保存しなおしてもらえればSJISになると思います。

  • bis_love
  • ベストアンサー率80% (4/5)
回答No.1

サンプルページを見てみましたが、どうやらメールフォーム部分はSJIS、ページ全体はUTF-8になっているのが原因のようです。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ↑このようにUTF-8が指定されているようですが ページ全体をSJISで表示されるようにしてみれば文字化けしないと思います。

ai_3
質問者

補足

bis_loveさん、お返事ありがとうございます。(><*) 早速アドバイスいただいた通りにしてみたところ、逆転現象が起きてしまいました。 CSSを「@charset "UTF-8";」で指定しているからかと思い、それも変更してみたのですが、変化がなかったです。 なぜでしょうか…。 違うメールフォームなら問題なく使えるものはいくらでもあるとわかっているのですが、このメールフォームはセキュリティへの配慮がされているところが気に入っています。なのでなんとかがんばって解決したいのです。。 もしも違う方法がありましたら、よろしくお願いいたします。

関連するQ&A

  • メールフォームの文字化け

    フリーのプログラムで、mailform3というPHPを使って、サイトにメールフォームを設置いたしました。 こちらからの送受信テストでは問題はなく、別の人間が試してみても問題はありませんでしたが、何通か文字化けしたメールが送られてきているようです。 文字化けはすべてアルファベットの羅列だったのですが、 相手のPC環境によりこちらで受信した際、文字化けを起こすことってあるのでしょうか。 この問題を回避させるために、コードを出した方がよろしいようでしたら公開します。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • このサイトのメールフォームってちゃんとPHPのプログラムは動いているの

    このサイトのメールフォームってちゃんとPHPのプログラムは動いているのですか? http://www.keitai-site.net/php/mailform_php/なのですが、タイトルの通り、このサイトのメールフォームってちゃんとPHPのプログラムが動いているのでしょうか?どなたか設置した方いらっしゃったら教えてもらえますか?私は設置して、試しにメールフォームに全部記入して送信ボタンを押したら、ちゃんと「送信されました」と表示されるのにも関わらず、メールが来てないのです。管理者用のメールアドレスを記入したにも関わらずです。パーミッションの設定に問題があるのでしょうか?

    • ベストアンサー
    • PHP
  • メールフォーム内容のチェック方法を教えて下さい。

    下記のサイトのフォームを使用しようと思っています。 http://www.keitai-site.net/php/mailform_php/ ●メールアドレス項目にて「正しいメールアドレスが入力されたかのチェック」 ●ID項目を設置し「半角英数字での入力しているかのチェック」を付けたいと思っています。 どのように書いたら良いか教えて下さい。 どうぞ宜しくお願いいたします。

    • 締切済み
    • PHP
  • メール 文字化け

    htmlでメールフォームを作りphpでそのhtmlを表示させるという機能を使っているのですが、送られてくるメールには????という文字化けの状態で送られてきます。 phpの知識はまったくといって初心者です。 http://www.yumemaboroshi.net/cgi4876/のサイトからもらってきました。 サーバはさくらレンタルサーバを使用しています。 誰か謎を教えていただけないでしょうか? 知り合いにも聞いたのですが、phpのファイルに記述されているものがよくわからないといわれました。 お願いします。

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

    プログラミング&PHP超初心者です。 PHPでメールフォームを作成して、送信には成功しましたが、受信したメールが文字化けしています。 いろいろ調べたのですが、解決できませんでした。 どなたか詳しいかた、教えていただけると嬉しいです。 送信する部分: if ($name != \"\" and $from != \"\" and $title != \"\" and $naiyou != \"\" ) { if (mb_send_mail($to, $title, $naiyou, \"From:$from\")) { echo \"メールを送信しました\"; } else { echo \"メール送信失敗です\"; } 文字コードはEUC-JPです。 サーバーはロリポップです。 よろしくお願いいたします。

    • 締切済み
    • 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
  • フォームメールを受信すると文字化けをします。

    携帯サイトにCGIフォーム(CGIの文字コードは全てshift_jis)を設置しています。 iMacや、iPatや、ThanderBirdで、受信をすると、すべて、文字化けします。 Macで、POPを返さない方が文字化けをしないと聞いたので、受信アドレスをgmailアドレスに変えましたら、Mac系では、文字化けがなくなりました。 が、同時に、普通のメールアドレスを設置し、ThanderBirdで受信をしましたら、やはり文字化けをします。 ThanderBirdのエンコード設定は、ISO-2022-JP となっていて、少し調べましたら 「インターネットでは7bitの文字コードでやりとりするのが標準なので、日本語の場合は7bitの「JIS(ISO-2022-JP)」という文字コードを使うよう定められている。Shift-JISやEUCは8bitの文字コードなので、送信の際、メールソフトがこれをJISに変換するのが普通だ。」とのこと。 半角カタカナなどは、含まれていないのですが、やはり、フォームメールを受け取りますと、文字化けをしてしまいます。 届いたメールは、タイトルは正しく表記され、中身が、文字化け。 メールのエンコードをShift-JISに変換すると、逆に、タイトルが文字化けし、本文(中身)が、正しく表記されます。 OUTLOOKなどWindowsの仕様のものを試していないのですが、 何かを修正すると、文字化けせずに、閲覧できるのか、もし、方法があれば、おおしえいただければと思いました。 使っていますCGIフォームは http://www.kurohama.net/c5.shtml 今は、Shift-JISですが、UTF-8に変換はできるようです。 どうぞ よろしくお願いいたします。

    • 締切済み
    • CGI
  • PHPにてメールフォームで文字化け

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

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

    アングラーズネット社の「インターネットショップCGI&受注管理」という書籍に付属されている「fmail」というCGIファイルを使ってメールフォーム作成してサイトにアップロードしたのですが、メール送信確認画面で文字化けします。そのメールフォームで受信したメールも文字化けしています。AdobeGoLiveCS2でホームページを作成しています。最初GoLiveでCGIファイルを読み込むとファイル内容が文字化けになっていたので、エンコーディングを日本語シフトjisに設定すると文字化けが解消されました。しかし、相変わらずメールフォーム及び受信メールは文字化けしたままです。 OSはWindowsXPです。 アドバイスよろしくお願い致します。

  • PHPで中国語でも文字化けしないメールフォームを作りたいのですが、サン

    PHPで中国語でも文字化けしないメールフォームを作りたいのですが、サンプルなど紹介しているサイトを教えてください><; 送信部分だけでも結構です。

    • 締切済み
    • PHP

専門家に質問してみよう