英語のOSからHTMLフォーム記入で自動返信する方法

このQ&Aのポイント
  • 英語のOSから問い合わせフォームに記入し送信する際に、文字化けの問題が発生しています。フォームのページの文字コード、CGI内部のデータの文字コード、受信するメールの文字コードについての質問をしています。
  • 質問1:問い合わせフォームのページの文字コードは何にすれば良いですか?
  • 質問2:CGI内部では受け取ったデータの文字コードはそのままでも良いのでしょうか?
回答を見る
  • ベストアンサー

英語OSからHTMLフォーム記入で英語で自動返信

文字コードの理解が足りず、うまくいきません。 どなたか助けていただけませんでしょうか?状況は下記の通りです。 外国人が英語のOS(windows英語版等)から英語のホームページを見ています。 問い合わせをしたくなり、そのサイトの問い合わせフォームに記入し送信します。 その内容はCGIに渡され、こちらにメールが届きます。 同時に閲覧者側にも自動送信で受け付けの案内が送信されます。 このような場合、 質問1:フォームのページの文字コード <meta http-equiv="Content-Type" content="text/html; charset=*******> は何にしたら良いのでしょうか? 質問2:CGI内部では受け取ったデータの文字コードはそのままも良いですか? 変換した方が良いのでしょうか? 自分あてようにはiso-2202-jpで受け取れるように変換したいです。 質問3:こちらにメールが来る時にはiso-2202-jpで受け取りたいのですが、 閲覧者の文字コードは違うはずですので、isoの設定などが解りません。 文字化け苦戦中で、先日もUTF-8のフォームから送信された内容がencode出来ずに 困っていたらどうやらhtmlファイルの保存形式がUTF-8出なかったためのようで まだまだ苦戦中なのですが、お時間をいただき申し訳御座いませんが、 教えていただけると嬉しいです。宜しく御願い致します。

  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.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は最も優れているといえましょう。

mobius99
質問者

お礼

有り難う御座います。と言う事は、 htmlのページは特にCGIと関係はないが、UTF-8が親切で最適である。 CGIにpostされる際のcharsetによって必要であれば変換。 とても解りやすいご説明を有り難う御座いました。 送信は日本人からはあります。中国は無いはずです。フランスからのメール(通常のemail)では、Cの下のニョロニョロは無視して (Cで代用)送られてくるので、あまり気にしていませんでしたが、その辺も十分に考慮したいと思います。基本はUTF-8で作り、CGI内部はcharsetで 対応していきたいと思います。 本当に有り難う御座いました。

関連するQ&A

  • フォームメールを受信すると文字化けをします。

    携帯サイトに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
  • CGIプログラムを使った申し込みフォームでメーラーに送信し、HTML形式で表示していますが文字化けしてしまいます。。

    Perlで書いたCGIプログラムを使って、申し込みフォームを作成し、送信先をOutlookExpressのメーラーにしてHTML形式で表示しています。 サーバーはLINUX、メールを見ているPCはWindows98SEです。 しかし、なぜか申請書という文字が瑞ソ書というふうに文字化けしてしまいます。 他の字は大丈夫のようなんですが。。どうしたら良いでしょうか? もちろん、print OUT "Content-type: text/html; charset=\"ISO-2022-JP\"\n"; の指定はしています。

    • ベストアンサー
    • CGI
  • UTF-8でのメール送信の問題点

    メール送信のシステムをPerlで作っています。 文字コードUTF-8で送信しようと思っていますが、UTF-8の場合の問題点を教えてください。 自分で調べた限りでは、昔は対応していないメーラーだと文字化けしていたが、今は対応していないメーラーはないので、大丈夫、という認識です。 しかしながら、大手のAmazonやYahoo!、プロバイダや銀行などから飛んでくるメールは、ほとんど全てがISO-2022-JPで飛んできます。 自分が知っている限り、UTF-8を使用しているところはありません。 なので、UTF-8でメール送信することに不安を感じています。 AmazonやYahoo!は、UTF-8だと何か問題があったので、あえてISO-2022-JPを使っているのでしょうか? ISO-2022-JPだと 髙 などが文字化けするはずなのですが、髙→高に変換してメール送信しているのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 自動返信について

    以下のCGIでは$MAILTO に送信されますが、追加的に、申込者に自動返信(文章つき)をするにはどのように修正するのですか。 #! c:/perl/bin/perl require "jcode.pl"; require "mimew.pl"; $SENDMAIL = 'c:\sendmail\sendmail'; # sendmailのパス $MAILTO = 'のがわ <nogawa@example.net>'; # メールの宛先 # フォームデータの取得 if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } # フォームデータの復元 foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($FORM{'msg'}); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END # メールの送信 open(MAIL, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL $header, $body; close MAIL; # サーバー出力 print <<END; Content-type: text/html; charset=Shift_JIS <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>めーるふぉーむ</title></head> <body> <p>メールを送信しました。</p> </body> </html> END

    • ベストアンサー
    • Perl
  • javamailにてメール文字化け

    javamailにて文字コードutf-8にてメール配信ソフトを作ってみたのですが、私の使っているモバイル nexus7のフリーメールに受信成功したのだが、文字化けしてしまいました。nezus7のメールソフトの エンコードがutf-8でないからだと判断。javamailの文字コードを途中でutf-8から該当しそうな(iso-2022-jpなど)にデコードしてから送信。しかし文字化けが治らず挫折してしまいました。utf-8なら 対応していると思ったのですが…。nexusの文字コードをどのように取得することができるかどなたかわかる方ご教授の程宜しくお願い申し上げます。 尚、content = new String(content.getBytes("utf-8"),"");""の部分にnexus7の文字コードに該当しそうな文字コードを数種類入れて実験!?してみました。どれも失敗。

    • ベストアンサー
    • Java
  • CGIで自動返信メール

    CGIで自動返信メール サイトに問い合せフォームを作成し 自分宛メールと自動返信メールが送付されるようにしたいです。 CGIの中身を書き換えメールのヘッダに言葉を入れたいのですがうまくいきません。 検証(1)デフォルトの設定 【結果】「送信」ボタンクリック後に出てくる画面と 自分宛メールと 自動返信メールの内容は、回答内容の羅列のみ { &jcode'convert(*subject, "jis"); $mailhead = ""; $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } 検証(2)1行だけ追加 【結果】「送信」ボタンクリック後に出てくる画面の一番上の行に 「お問い合わせありがとうございます」と出て その下に回答内容が羅列されている。 自分宛メールも同様の症状。 自動返信メールは届かない。 { &jcode'convert(*subject, "jis"); $mailhead = "お問い合わせありがとうございます";★ここを変更してみました★ $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } 検証(3)2行追加 【結果】「送信」ボタンクリック後に出てくる画面の一番上の行に 「お問い合わせありがとうございます。 後日担当よりご連絡させていただきます。」と出るが 回答内容は文字化け。 自分宛メールも同様の症状。 自動返信メールは届かない。 (ちなみに検証(2)の「お問い合わせありがとうございます」の文末に 「ありがとうございます。」と「。」を追加しただけでも これと同じ結果になりました) { &jcode'convert(*subject, "jis"); $mailhead = "お問い合わせありがとうございます。 後日担当よりご連絡させていただきます。 ";★ここを変更してみました★ $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } CGIの抜粋がこれだけでは足りないでしょうか? ちなみに自分宛メールはhotmailのアドレスを、 自動返信メールはgoomailを使用しています。

  • 文字コードについて教えてください。

    ホームページを作成するときに指定する文字コードをどうしたらいいのか迷っています。 ウインドウズ環境でホームページを作る際、入力された文字は秀丸などの特別なソフトを使わなければ自動的にShift JISコードになると思うのですが、この場合、タグを <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> と指定するべきでしょうか?それとも、 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp"> と指定するべきでしょうか? ISO-2022-JPで指定した場合、ブラウザが必ずしも自動判別してくれないこともあるのでしょうか? また、CGIスクリプトはShift JISで入力するとエラーを起こすことがあると聞いたことがあります。 ホームページを作成する場合には、常にISO-2022-JPかEUCの文字コードで作成するようにしたほうがいいのでしょうか? いろいろ検索して調べてみたのですが、どうもよくわかりません。宜しく御願いします。 なお、gooのホームページを閲覧するときも頻繁に文字化けしています(文字コードがEUCに指定されていないのはなぜでしょうか?)。

  • フォームの文字コードについて

    phpについて質問なんですが、<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">となっているページのフォームの内容の文字コードをphp側で確認すると、文字コードが「EUC-JP」となっています。 これはこういうものなのでしょうか? ご教授よろしくお願いします。

    • 締切済み
    • PHP
  • 自動返信メール機能のついたお問合せフォームを作りたい

    htmlのフォームでお問合せ画面を作成し、送信者に対して自動返信出来るような機能をつけたいのですが、実際に起動させる時にPHPやCGIの知識が必要だとか聞いたのですが、私は全く解りません。 そのようなシステムを無償で提供してくださってるサイトをご存知の方は教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • メールフォーム(CGI)で英語のメッセージを受け取るには?

    メールフォームで英語のメッセージを受け取るには? 現在使っているmailformのCGIが日本語用なので、英語でのメッセージを 送信するとき、エラーメッセージ等が文字化けしてしまいます。 (エラーメッセージを英語にしたりしてみましたが、細かい項目などが 文字化けします。) 英語用のCGIはどこで入手できますか? できれば、設置説明が日本語だとありがたいです。

    • ベストアンサー
    • HTML