- ベストアンサー
英語のOSからHTMLフォーム記入で自動返信する方法
- 英語のOSから問い合わせフォームに記入し送信する際に、文字化けの問題が発生しています。フォームのページの文字コード、CGI内部のデータの文字コード、受信するメールの文字コードについての質問をしています。
- 質問1:問い合わせフォームのページの文字コードは何にすれば良いですか?
- 質問2:CGI内部では受け取ったデータの文字コードはそのままでも良いのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
回答1:単に英語(というかマルチバイトを使わない)フォームページを作りたいだけであれば、そこはUTF-8でもShift_JISでもWindows-31Jでも構わないです。より英語圏の人に対して親切なのはISO-8859-1でしょうか。フォームメールの開発、世界各国の言語のブラウザー対応など色々考慮に入れて最も適切なのはUTF-8でしょう。 回答2:CGIでPOSTされたデータを受け取る時、実際何の文字コードでくるかはブラウザーに依存します。SJISでデータを受け取ろうがPOSTするのはUTF-8固定なブラウザー、現在閲覧中のページのcharsetで送信するブラウザー。 普通のお行儀の良いブラウザーであればPOSTされるデータのコンテンツタイプにcharsetを記述してくれるはずなのでそれを読み取ってエンコーディングの解釈をすればより良いです。 また、POSTされたデータをメール(例えばsendmail(1))に流す際にどうするかはフォームメールCGIを作る人が決めます。US-ASCIIだろうとISO-8859-1だろうとUTF-8だろうとPOSTされたデータをiso-2202-jpでsendmailに流し込んでやればあなたにはtext/plain;charset=iso-2202-jpなメールが届く事でしょう。 そして、自動返信されるメールはtext/plain;charset=iso-8859-1にしておけば問題ないと思います。自動返信されるメールのサブジェクトと本文が全てASCII文字なのであれば、英語のメールソフトでもほとんど関係ないでしょうけどね。 回答3:前述の通り、ユーザーからPOSTされるデータとあなたがCGIでメール送信するデータには本来何の関係もありません。CGIがPOSTされたデータのエンコードが何なのかを正しく判定できて、かつそれをISO-2202-JPに変換できれば良いのです。もっとも、7ビット文字しかないデータはUS-ASCII←→ISO-8859-1←→UTF-8←→ISO-2202-JP間で変換する必要はないですけど。 ---- そのフォームメールのページをフランス人や日本人も見るのか否かというのが重要なファクターですね。すなわち、POSTされるデータは7ビットの文字ばかり(US-ASCIIのみ)だと期待して良いのか、フランス語やドイツ語で書いても良い(ウムラウトなどを表現できるISO-8859-1が必要な)のか、いやいや日本人も中国人もフォームに質問を書きまっせ(EUC-JPやShift_JIS、EUC-CN、BIG-5も扱えないとダメ)なのか。 そういう意味でUTF-8は最も優れているといえましょう。
お礼
有り難う御座います。と言う事は、 htmlのページは特にCGIと関係はないが、UTF-8が親切で最適である。 CGIにpostされる際のcharsetによって必要であれば変換。 とても解りやすいご説明を有り難う御座いました。 送信は日本人からはあります。中国は無いはずです。フランスからのメール(通常のemail)では、Cの下のニョロニョロは無視して (Cで代用)送られてくるので、あまり気にしていませんでしたが、その辺も十分に考慮したいと思います。基本はUTF-8で作り、CGI内部はcharsetで 対応していきたいと思います。 本当に有り難う御座いました。