http://u28.jp/inquiry/index.html
上記のURLに設置したフォームからメールを送信すると、
送信されたメールが文字化けします。
文字化けの内容は、漢字だらけ、まるで中国語みたいなメールになるというものです。
【概要】
CSSにて文字コードをUTF-8に指定しています。
ページのヘッダーでcharsetをUTF-8にしています。
届くメールは、メールタイトルはきちんと表示されています。
本文のみ、漢字だらけの文字化けです。
フォームのcgiは下記のような内容です。
http://u28.jp/inquiry/cgi.txt
(コードをテキストファイルにコピペしました)
実際はsendmail.cgiというファイル名で
動作しています。
このcgiを別のhtmlから動かすと、
(例:http://www.u28.jp/inquiry/input.html)
文字化けせずにきちんとメールが届くので、
cgiプログラムの問題ではなさそう・・・と思っています。
(css?JavaScript?はまって抜け出せません)
何度やっても、到着するメールは文字化けしています。
症状は以上です。
どなたか、お気づきの点などがありましたら
アドバイスをお願いいたします。
この CGI スクリプトが文字コードの変換に使用している jcode.pl は、UTF-8 には対応していません。
対応している文字コードは、ISO-2022-JP, EUC-JP, Shift_JIS の 3 つです。
一般的に、Web ブラウザーはフォームに入力されたデータをページの文字コードで CGI へ送る(と思う)ので、ページの文字コードを上記の何れかにする必要があると思います。
また、この CGI スクリプトは、入力データの文字コードの判別を jcode.pl の自動判別に頼っているので、判別に失敗する可能性があります。
不思議なことに、css・ページヘッダをShift_JISに変更しても、なぜか文字化けが起きてしまったのです。
<<
念のためお聞きしますが、ヘッダーの charset の値だけでなく、XHTML ファイル自体の文字コードも変更しましたか?
ブラウザはWebサーバが送って来るHTTPヘッダを見ているので。
meta タグよりも HTTP ヘッダーの方を優先するのはその通りなんですが、
質問者さんが示したページでは、HTTP ヘッダーで文字コードを送ってきていません。
ヘッダ(metaタグ)の指定と実際の文字コードが矛盾しているのでは。
ヘッダと実際の文字コードが食い違っている場合は、ブラウザ(特にIE)はヘッダを無視しますよ。
shiftjisに変更した、といった時にブラウザで見てみてエンコーディングがちゃんとシフトJISと表示されていますか?
「メタタグでの文字コード指定」と
「ファイルそのものの文字コード指定」を
混同していた(よく理解していない)ことが
理由のようです。
もう一度、文字コードをよく確認しながら
進めてみたいと思います。
本当にありがとうございました。