プロが教える店舗&オフィスのセキュリティ対策術

PHP初心者ですが、設置が簡単ということで、メールフォーム(埋め込み型)を使おうとしているのですが、その部分だけ文字化けしてしまいます。
http://aichan.mbsrv.net/ai/mailform/

メールフォーム配布サイト(こちらで配布されているものを使用しています)
http://www.keitai-site.net/php/mailform_php/

解決しようといろいろ調べたところ、文字コードをPHPファイルに記述すればよい、ということがよく書かれていました。しかしその方法が自分にとって、どうすればよいのかがわからず、こちらで質問させていただいています。

どのようにすればよいでしょうか?アドバイスいただけますでしょうか。
よろしくお願いいたします。

A 回答 (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
「PHPを使ったフォームメールが文字化けし」の回答画像3
    • good
    • 0
この回答へのお礼

bis_loveさん、できました~!!

うれしいです。本当にありがとうございます。

今まで右下の表示なんて見てなかったけど、確かに「UTF-8」とかありました。私はずっとメモ帳でHTMLを書いていたのですが、去年あたりから無料のTeraPadを使っています。それで、こういうエディタではmetaタグを書き換えるだけではだめなのだと初めて知りました。図で説明してくださったのとほぼ同じやり方で、エンコードができるようになっていました。

そして、浅い知識なくせにこれからはUTF-8で作るのがベストなのかな、って思いこんでいました。携帯サイトも考慮するなら、なにがいいって、一概に決められないんですね。携帯表示もできるようにしたいと思っているので、メールフォームはSJISで作成したいと思います。

こんなにご親切にしていただいて、勉強にもなり、本当に感謝の気持ちでいっぱいです。ベストアンサーとお礼だけじゃ伝えきれないです。

ありがとうございました☆

お礼日時:2012/06/11 15:49

ページ全体のスクリプトがUTF-8になっているのではないでしょうか。



秀丸やサクラエディタなどのテキストエディタでファイルを開いてみてください。
そういったソフトでファイルを開くと右下にSJISやUTF-8なんかが書いてあると思います。

そういったテキストエディタで開きなおし、SJISで開きなおす。というコマンドがソフトにありますのでそうしてみてください。

もしくは一度スクリプトを開いて、Ctrl+Aなどで全選択してメモ帳などに貼り付けてもう一度保存しなおしてもらえればSJISになると思います。
    • good
    • 0

サンプルページを見てみましたが、どうやらメールフォーム部分はSJIS、ページ全体はUTF-8になっているのが原因のようです。



<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
↑このようにUTF-8が指定されているようですが
ページ全体をSJISで表示されるようにしてみれば文字化けしないと思います。

この回答への補足

bis_loveさん、お返事ありがとうございます。(><*)

早速アドバイスいただいた通りにしてみたところ、逆転現象が起きてしまいました。
CSSを「@charset "UTF-8";」で指定しているからかと思い、それも変更してみたのですが、変化がなかったです。

なぜでしょうか…。

違うメールフォームなら問題なく使えるものはいくらでもあるとわかっているのですが、このメールフォームはセキュリティへの配慮がされているところが気に入っています。なのでなんとかがんばって解決したいのです。。

もしも違う方法がありましたら、よろしくお願いいたします。

補足日時:2012/06/10 16:14
    • good
    • 0

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