- 締切済み
文字化けについて(フォーム送信)
すいません、初心者です。 フォームに記入された文字は日本語、英語とも表示されますが、送信ボタンを押し、そのフォームが指定メールへ転送された時、日本語が文字化けし、読めません。文字コードが表記されます。(英語は問題有りません) HTML上に、メタタグを入れて文字コード指定しても駄目でした。 ちなみに、DREAMWEVERではデザインページでは日本語が正しく表示されますが、ソースは日本語が文字コードで表記されています。HTMLは日本語、英語の共存です。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
≫しかし、送信ボタンを押した後、サーバーを通って指定メール先へテキストメールとして飛ばしたら、そのテキストメールが文字化けなのです。(文字コードが表示されます)英語は問題ありません。 これは、届いたメールが読めないということですね。 メールソフトで、ソース表示をするか、メールソフト側のエンコーディングで文字コードを変更すると、どういうトラブルかは分かります。Tunderbirdでしたら、表示→文字エンコーディング。 フォームメール用のCGIでの処理は、 受け取ったデータをメールサーバーへ渡す変換 ★ヘッダ内には、RFC 2047 ( http://www.akanko.net/marimo/data/rfc/rfc2047-jp.txt )で許されている文字しか入れられないので =?ISO-2022-JP?B?・・・・となっているか? ★ヘッダ内に本文の文字コードの指定 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit が含まれているか? ★本文がその文字コードで書かれているか? なお、フォームメールCGIが処理できる文字コードにあわせて、<from acept-charset=""を指定する。また、これを解釈しないブラウザのためにHTML自体を、その文字コードで作成するとよいでしょう。 ブラウザは、HTMLの文字コードにあわせて送信するので・・・ 【引用】____________ここから accept-charset = charset list [CI] この属性は、入力データについて、当該フォームを処理するサーバが受け入れる文字符号化方法のリストを指定する。 クライアントは、このリストを排他関係リストとしてインタープリトしなければならない。すなわち、サーバは受信する【メッセージ】実体毎に、どの1つの文字符号化方法をも受け入れ可能である。 この属性のデフォルト値は予約文字列「UNKNOWN」(不明)である。ユーザエージェントは、この値を、当該FORM要素を含む文書の伝送に使われた文字符号化方法であるものとしてインタープリトしてよい。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Forms in HTML documents (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/interact/forms.html#edef-FORM )]より
- ORUKA1951
- ベストアンサー率45% (5062/11036)
CGIを使わずに、HTMLのフォームからメールを送信するのは無理です。 かってNetscapeが、独自仕様で実装していましたし、今のブラウザの一部は対応していますが、本来の方法ではありません。 CGI側で、文字コードの判別を含めてメールデータに変換して処理すること。くれぐれも、SPAMのステップに使用されないようね。
補足
すいません、私の説明が足りなかったようです。 フォームのデザインはHTMLです。送信ボタンを押した後、サーバーを介して指定メールへ飛ばせるのはCGIを使っています。 HTMLそのものからフォームを送信させようとは思っておりません。 そこでHTMLのフォームへユーザーが記入するのは英語、日本語とも問題有りません。 しかし、送信ボタンを押した後、サーバーを通って指定メール先へテキストメールとして飛ばしたら、そのテキストメールが文字化けなのです。(文字コードが表示されます)英語は問題ありません。 補足として、DreamweaverでHTMLを組んでいる時、ソース内では日本語だと、文字コードのみの表示しかされません。しかし、ブラウザーで表示させると問題ありません。 以上で説明が足りているでしょうか?
お礼
すいません、風邪で寝込んでしまい、しばらくチェックできませんでした。 メール受信の際の文字化けはCGIに content-type: text/html; charset="ISO-2022-JP" をつけたら直りました。 ところが、その送られたHTMLメールは全く改行されず、そのままのダラダラ表示になってしまったので<br>を入れたのですが、そうしたら今度はエラーで送れなくなってしまいました。 改行して表示させる場合は<br>では駄目なのでしょうか? 質問ばかりですいません。