• 締切済み

フォームの日本語が文字化け

ホームページビルダー15を使用してます。 フォームを作成し、元々ついていた「anketo.cgi」に飛ばすように設定して みたのですが、メールは送られてくるものの日本語が全て文字化けして しまってます。 英数字は全く問題ありません。 エンコードなのではとメーカーには言われてしまったのですが、どのように 対応してよいのか分かりません。 ご教授いただけましたらと思います。 cgiの内容 #!/usr/local/bin/perl # # (C) 2010 株式会社******** # #------ sendmailパスの指定 ---------------------------------------------- # 以下の、$mailprogに、サーバー上にある"sendmail"コマンドをフルパスで # 記入します。詳しくは、プロバイダのガイドに従ってください。 # (例) $mailprog = '/usr/lib/sendmail'; $mailprog = '/usr/sbin/sendmail'; #------------------------------------------------------------------------ #------ メールアドレスの指定 ------------------------------------------ # 以下の、$mailtoに、アンケートの送り先となるメールアドレスを記入します。 # (例) $mailto = 'mailaddress@sample************.jp'; $mailto = ''; #------------------------------------------------------------------------ require 'jcode.pl'; #Get the input read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); #Split the name-value pairs @pairs = split (/&/,$buffer); foreach $pair(@pairs) { ($name, $value) = split(/=/, $pair); #Un-Webify plus signs and %-encoding $value=~tr/+/ /; $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $FORM{$name} = $value; if ( $name ne "to" ) { push (@fields, $name) unless (grep(/^$name$/, @fields)); } } # ### 送信フォーマット # $mail_msg = ""; foreach $field (@fields) { $mail_msg = "$mail_msg-----------------------------------------------\n"; $mail_msg = "$mail_msg($field) $FORM{$field}\n"; } $mail_msg = "$mail_msg-----------------------------------------------\n"; # ### ShiftJis to Jis # &jcode'convert(*mail_msg, 'jis'); open(MAIL,"| $mailprog $mailto")|| die "Can't open $mailprog!\n"; print MAIL $mail_msg; close(MAIL); # ### Make the person feel good for writing to us # print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>ありがとうございました。</TITLE></HEAD>\n"; print "<BODY bgcolor=\"#F5F5F5\">\n"; print "<H2 align=\"center\">受け付け致しました。</H2>\n"; print "<HR>\n"; print "<P>\n"; print "<H3 align=\"center\">確認後担当者よりご連絡差し上げます。</H3>\n"; print "</BODY></HTML>\n";

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

 フォームで送信する場合、何も指定が無ければそのフォームの書かれている文字コードで送信されます。文字コードを指定する場合は<form>要素にcharset属性でコードを指定しましょう。  jcode.plを使うとは、随分と古いCGIのようです。現在のperlには、encode.pmが標準で含まれている。  フォームの文字コードをShift_JISに変換してみたらいかがでしょう。

関連するQ&A

  • メールフォームから受信で件名が表示されない

    cgi初心者です、 無料のアンケートフォームを使用しているのですが 受信時に件名が表示されません、 どこえおどうしたらよいのでしょうか? ちなみにhtmlの方に <input type=hidden name="subject" value="査定フォームからのメールです">を入れてみましたが受信した内容の上に表示されるのですが メール受信時の件名には表示されません。 以下cgi内容 #!/usr/bin/perl # # (C) COPYRIGHT International Business Machines Corp. 1999 # All Rights Reserved # #------ sendmailパスの指定 ---------------------------------------------- # 以下の、$mailprogに、サーバー上にある"sendmail"コマンドをフルパスで # 記入します。詳しくは、プロバイダのガイドに従ってください。 # (例) $mailprog = '/usr/lib/sendmail'; $mailprog = '/usr/sbin/sendmail'; #------------------------------------------------------------------------ #------ メールアドレスの指定 ------------------------------------------ # 以下の、$mailtoに、感想の送り先となるメールアドレスを記入します。 # (例) $mailto = 'mailaddress@sample.ibm.jp'; $mailto = '*****@********'; #------------------------------------------------------------------------ require 'jcode.pl'; #Get the input read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); #Split the name-value pairs @pairs = split (/&/,$buffer); foreach $pair(@pairs) { ($name, $value) = split(/=/, $pair); #Un-Webify plus signs and %-encoding $value=~tr/+/ /; $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $FORM{$name} = $value; if ( $name ne "to" ) { push (@fields, $name) unless (grep(/^$name$/, @fields)); } } # ### 送信フォーマット # $mail_msg = "査定フォームからのメールです"; foreach $field (@fields) { $mail_msg = "$mail_msg-----------------------------------------------\n"; $mail_msg = "$mail_msg($field) $FORM{$field}\n"; } $mail_msg = "$mail_msg-----------------------------------------------\n"; # ### ShiftJis to Jis # &jcode'convert(*mail_msg, 'jis'); open(MAIL,"| $mailprog $mailto")|| die "Can't open $mailprog!\n"; print MAIL $mail_msg; close(MAIL); # ### Make the person feel good for writing to us # print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>Thank you!</TITLE></HEAD>\n"; print "<BODY bgcolor=\"#ffffff\">\n"; print "<align=\"center\">お問合せいただきありがとうございます。\n"; print "</BODY></HTML>\n";

  • CGIメールフォームの件名について

    ホームページ上にCGIで動作するメールフォームを作成しました。実際にmailform.htmlとmailform.cgiをアップロードして、正常に送信先のメールアドレスにメールフォームの内容が送信されてきました。 しかし届いたメールの件名は(件名なし)と表示されます。 CGIプログラムに関してほとんど知識が無いので、mailform.html mailform.cgiはテンプレートを使用しています。 mailform.htmlの内容に件名を追加して、実際に届くメールに件名が表示されるようにするには、CGIファイルにどう記述すればよいでしょうか。 <mailform.htmlの内容> <TABLE> <TBODY> <TR> <TH nowrap>お問い合わせ内容</TH> <TD colspan="2"><TEXTAREA name="Kansou" rows="5" cols="50"></TEXTAREA></TD> </TR> <TR> <TH nowrap>お名前</TH> <TD colspan="2"><INPUT name="Namae" size="50"></TD> </TR> <TR> <TH nowrap>電子メール</TH> <TD colspan="2"><INPUT name="Mail" size="50"></TD> </TR> <TR> <TH nowrap>電話番号</TH> <TD colspan="2"><INPUT name="Tel" size="50"></TD> </TR> <TR> <TH nowrap></TH> <TD align="center"><INPUT type="submit" value=" 送る "></TD> <TD align="center"><INPUT type="reset" value=" リセット "></TD> </TR> </TBODY> </TABLE> <mailform.cgiの内容> require 'jcode.pl'; #Get the input read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); #Split the name-value pairs @pairs = split (/&/,$buffer); foreach $pair(@pairs) { ($name, $value) = split(/=/, $pair); #Un-Webify plus signs and %-encoding $value=~tr/+/ /; $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $FORM{$name} = $value; if ( $name ne "to" ) { push (@fields, $name) unless (grep(/^$name$/, @fields)); } } # ### 送信フォーマット # $mail_msg = ""; foreach $field (@fields) { $mail_msg = "$mail_msg-----------------------------------------------\n"; $mail_msg = "$mail_msg($field) $FORM{$field}\n"; } $mail_msg = "$mail_msg-----------------------------------------------\n"; # ### ShiftJis to Jis # &jcode'convert(*mail_msg, 'jis'); open(MAIL,"| $mailprog $mailto")|| die "Can't open $mailprog!\n"; print MAIL $mail_msg; close(MAIL); # ### Make the person feel good for writing to us # print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>Thank you!</TITLE></HEAD>\n"; print "<BODY bgcolor=\"#9dffff\">\n"; print "<H2 align=\"center\">送信いただき、ありがとうございました!</H2>\n"; print "</BODY></HTML>\n"; よろしくお願いします。

    • ベストアンサー
    • CGI
  • Sendmailの文字化けについて

    以前にも同じ質問をしたのですが、いまいち解決していないので、もう一度質問させて頂きます。 ホームページでsendmailをつかってフォームより記入してもらった内容を自分のところと確認メールとして記入した人のところに送るようにしていますが、確認メールが文字化けすることがあるようです。 しかし、全ての人に対して化けるというわけではなく、ほとんどの場合は大丈夫なようですが、一部の人に対してだけ化けるようです。 関係しそうな部分を大まかに書くと下記のようにしておりますが、間違っているでしょうか? if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); &jcode'convert(*name,'sjis'); $xx =$value; &trans; $value = $xx; } sub trans{ $from='[@01-9A-Za-z._-]'; $to='[@01-9A-Za-z._-]'; &jcode'convert(*xx, 'euc'); &jcode'convert(*from, 'euc'); &jcode'convert(*to, 'euc'); &jcode'tr(*xx, $from, $to); &jcode'convert(*xx, 'sjis'); } &jcode'convert(*message,'jis'); if (!open(MAIL,"|$sendmail $mail_address")) {&error;} &jis("Subject: $mailname"); print MAIL "$msg\n"; print MAIL "To: $mail_address\n"; print MAIL "From: $mailfrom\n"; print MAIL "\n"; print MAIL "$message"; close(MAIL); sub jis { $msg = $_[0]; &jcode'convert(*msg, 'jis');}

    • ベストアンサー
    • Perl
  • メールフォームCGIの文字化け。どなたか助けてください。

    こんにちは。メールフォームを作ったのですが、 テスト送信すると文字化けになってしまいます。 それも、短い文章なら、日本語で表示されるのですが、文章がながくなると、一部分が文字化けしてしまいます。ヤフーの長い記事を貼り付けてみたのですが、やっぱり長いと変なところが文字化けしてしてしまいます。また、テストテストテストテスト・・・ とコピペすると、14行目あたりから急に テストテストテストテストテストテストテストテストテ! %9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%・・・・・・・ となってしまいます。いったいどのように書けば文字化けを起こさないで送信できるのでしょうか。。 以下はメールのサブルーチンです。どこがおかしいのでしょうか?ご指導お願いいたします。 sub mail{ $mail_body .= "$mes\n"; $mail_body .= "$mes2\n"; $mail_body .= "$mes3\n"; &jcode'convert(*mail_body,'jis'); $subject2 = &mimeencode($subject); open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n"; print MAIL "From: $from_mail\n"; print MAIL "To: $to_mail\n"; print MAIL "Subject: $subject2\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "$mail_body\n"; close (MAIL); }

    • ベストアンサー
    • Perl
  • UTF-8で文字化けしないようにするには?

    Shift-jisのページだったのですがリニューアルを機に文字コードを utf-8に変更してページを作っています。 メールフォーム用のcgiは以前と同じものを使いたいのですがページを utf-8で作ったために送信すると文字化けしてしまいます。 cgi自体をutf-8で保存しましたが同じ結果でした・・・ 確認ページがあるわけでもなく必須の項目が埋まっていれば送信するような シンプルなものなのですがutf-8で文字化けしないようにするには どのように変更したらいいのでしょうか? ソースは以下の通りです。 #!/usr/bin/perl require "jcode.pl"; require "mimew.pl"; $SENDMAIL = '/usr/sbin/sendmail'; $MAILTO = 'mail@example.com'; $MAILSUBJECT = 'メールフォームより'; $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; } $msg .= "----- 連絡先 -----\n"; ~~フォーム処理につき省略~~ if ($bad_input) { print <<END; Content-type: text/html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>エラー</title> </head> <body> <center> <h1>エラー</h1> <div>必須項目が入力されていません。</div> </center> </body> </html> END }else { $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($form{'mail'}); $mail_subject = mimeencode($MAILSUBJECT); $body = jcode::jis($msg); $head = <<END; To: $mail_to From: $mail_from Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END open (MAIL, "| $SENDMAIL -i -t -f $form{'mail'}") or die("Error: Can't open pipe for sendmail"); print MAIL $head, $body; close MAIL; print <<END; Content-type: text/html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>送信完了</title> </head> <body> <center> <h1>送信完了</h1> <div>下記の内容で送信しました.</div> <textarea cols="48" rows="24"> $msg </textarea> </center> </body> </html> END }

    • 締切済み
    • CGI
  • フォームのINPUT NAMEが日本語化け

    CGIがまったく分からない者ですが、会社からホームページ管理を任されてしまいました。INPUT NAMEを日本語にすると文字化けになり、困っております。ご存知の方、どうか中のソースをどう編集したら良いのか細かく頂けたら本当に助かります。 以下、CGIのソースです。 #本文タイトル $honbun_title = '■□ 申込 ■□'; #time #($sec, $min, $hour, $mday, $mon, $year, $wdy, $yday, $isdst) = Localtime(time); $clength = $ENV{'CONTENT_LENGTH'}; if($clength ne '') { read(STDIN, $query_string, $clength); @elements = split(/&/,$query_string); $i = 0; foreach $element (@elements) { (@name[$i], $buf) = split(/=/, $element); $buf =~ tr/+/ /; $buf =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*buf, 'jis'); @value[$i] = $buf; $i++; } &jcode'convert(*honbun_title, 'jis'); &jcode'convert(*ftitle, 'jis'); open (MAIL, "|$sendmail $trans"); print MAIL "From: $smail ($sname)\n"; print MAIL "Subject: $ftitle\n"; # print MAIL "$year\n\n" print MAIL "$honbun_title\n\n"; for($j = 0; $j < $i; $j++) { print MAIL "■@name[$j] : "; print MAIL ": @value[$j]\n\n"; } close(MAIL); print "Location: $query_file\n\n"; }

    • 締切済み
    • CGI
  • アンケートフォームに機能の付け加え。

    ホームページ上で、訪問者からアンケートを採れるsendmailを使用した CGIを設置しています。ここに、訪問者から簡単な素材を提供して頂けるよう 以下のようなスクリプトに、小さなファイル(gif画像など)を 添付して送れるように機能を付け足したいです。 どうすればいいか、困っています。どうすればよいでしょうか? @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; &jcode'convert(*name,'sjis'); &jcode'convert(*value,'sjis'); if ($name eq 'to') { $to = $value; } if ($name eq 'from') { $from = $value; } if ($name eq 'subject') { $subject = $value; } if ($name eq 'body') { $body = $value; } } # cheack if ($from eq "") { $from = "unknown\@."; } if ($from eq " ") { $from = "unknown\@."; } # send mail &jcode'convert(*from,'jis'); &jcode'convert(*subject,'jis'); &jcode'convert(*body,'jis'); if (!(open(MAIL,"| $sendmail -t"))) { &error('システムエラー','メールの送信に失敗しました。'); } print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain; charset=iso-2022-jp\n\n"; print MAIL "$body\n"; close(MAIL); # view html &jcode'convert(*from,'sjis'); &jcode'convert(*subject,'sjis'); &jcode'convert(*body,'sjis'); $body =~ s/\r\n/\r/g; $body =~ s/\n/\r/g; $body =~ s/\r/<BR>/g;

    • 締切済み
    • CGI
  • メイルフォームの本文が文字化け

    サーバーを移転してからある特定のソース部分だけ不具合が出ました。 ユーザーがログイン後特定のユーザーにアドレスを公開せずに、メッセージをおくり、その内容がユーザのアドレスに受信するというものなのですが、 その受信するメイルが文字化けしてしまいます。 その他にサイト上からおなじCGIファイルを利用して、管理者などにおくるメイルは正常に機能しています。 ■不具合が出ている部分のソースです。 if (!open(OUT,"| $SENDMAIL -t")) print OUT "Reply-To: $ADMIN\n"; print OUT "Errors-To: $ADMIN\n"; print OUT "To: $MAIL_TO\n"; if ($BCC == 1){ print OUT "Bcc: $ADMIN\n"; } print OUT "From: $ADMIN\n"; &jis("Subject: $SUBJECT"); print OUT "$msg\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT 'Content-Type: text/plain; charset=iso-2022-jp' . "\n\n"; &jis("$NAME_FROM:$FORM{'MSG'}"); print OUT "$msg\n"; &jis("▽返事はココから"); print OUT "$msg\n"; &jis("$bbs_cgi1?M=H&T=$ID_FROM&I=$ID_TO&PASS=$PASS_TO"); print OUT "$msg\n"; close(OUT); } print "Content-type: text/html\n\n"; print "<html><head><title>$TITLE</title></head><body>■送信完了<HR> $NAME_FROMさんより$NAME_TOさんへメール送信完了しました。<hr>\n"; print "[<a href=$menu_cgi?mode=menu&I=$MYID&PASS=$MYPASS>メニューに戻る</a>]<br>\n"; print "</body></html>\n"; exit; } ■文字化けは aika!' (Basd "&JV;v$O%3%3$+$i (B ような感じです。 かなりいろいろ探してみたのですが、だめなので ここに投稿しました。 わかる方いらっしゃいましたら、どうぞご回答いただければと思います。よろしくお願いします。

    • 締切済み
    • CGI
  • CGIの文字化けについて

    CGI初心者ですが、本とネットを調べてメールフォームを作成しています。 テストで作成していた時は何故かうまくいったのですが、 本番用サイトにアップしテストしてみると、自動返信メールが文字化けするようになってしまいました。 送信先は会社側がgmail、お客様側がスマホ(docomo)として自分のスマホに送っていますが、 gmailもスマホも本文のみが文字化けしています。 ネット上でも調べて、件名の文字化けは治すことが出来たのですが、本文がどうしても文字化けしてしまい、治せません。。。 HTMLの文字コードはUTF-8で、CGIもUTF-8Nで保存しています。 ほぼ本を見てそのまま作成し、修正部分だけネットで調べて追記していく、というような感じで 酷い内容のコードになってると思いますが。。 原因がわかる方がいらっしゃいましたら、是非ご教示頂ければと思っています。 また、こんな私に参考になるサイトがあれば教えて頂きたいです。 不明点は出来るだけ補足するつもりです。 宜しくお願いします。 どうかお助け下さい! ------------------------------------------------- 以下がコードです。 #!/usr/local/bin/perl #setting require './lib/cgi-lib.pl'; use lib './lib'; use Jcode; use CGI; use utf8; use Encode; #フォームから入力データ読込 &ReadParse(*in); $name = "$in{'name'}"; $subject = "$in{'subject'}"; $address = "$in{'address'}"; $at = '@'; $domain ="$in{'domain'}"; #★メール送信先★会社側メールアドレス $to = 'kaisya@gmail.com'; #★メール送信者名★会社名 $fromname='株式会社かいしゃ'; #★メール送信者表示アドレス★ $from = 'kaisya2@kaisya2.com'; #★メール送信用タイトル★ $fromsubject = 'WEB会員登録のお申込みありがとうございました'; #★メール送信用内容★ $from_msg = <<END_OF_DATA; WEB会員登録のお申込み、ありがとうございました。 以下のURLへアクセスし、ご登録を進めて下さい。 http://www.kaisya.xxxx また、このメールに心当たりのない方は、このメールは削除して頂きますようお願い致します。 ☆---------------------------------☆ 株式会社かいしゃ HP:http://www.kaisya.xxxx MAIL:kaisya2@kaisya2.com TEL:00-9999-9999 FAX:00-9999-8888 ☆---------------------------------☆ END_OF_DATA $nstatus = 0; $mstatus = 0; $dstatus = 0; #process before send $mailName = Jcode::convert( $name , "utf8", "utf8" ); $mailSubject = Jcode::convert( $subject , "utf8", "utf8" ); $soushin_name = Jcode::convert( $fromname , "utf8", "utf8" ); $from_msg = Jcode::convert( $from_msg , "utf8", "utf8" ); #未入力check if($address eq "" ){ $nstatus = 1; } #mailaddress check if($address =~ /[^a-z0-9_\-\.]/ ){ $mstatus = 1; } #domain check if($domain =~ /^$/ ){ $dstatus =1; } if($nstatus == 1 or $mstatus == 1 or $dstatus == 1){ &mailerror; } #mailaddress $mailaddress = $address . $at .$domain; #sendmail #会社側にメールを送る $soushin_name = encode('MIME-Header-ISO_2022_JP', $soushin_name); open(MAIL, "| /usr/sbin/sendmail -t"); print MAIL "To: $to\n"; print MAIL "From:$soushin_name<$from>\n"; print MAIL "subject: $mailSubject\n"; print MAIL "Content-Type: text/plain; charset=\"iso-2022-jp\"\n\n"; print MAIL "名前: $mailName\n"; print MAIL "e-mail: $mailaddress\n"; close(MAIL); #sendmail2 #送信者側にメールを送る open(MAIL, "| /usr/sbin/sendmail -t"); print MAIL "To: $mailaddress\n"; print MAIL "From:$soushin_name<$from>\n"; print MAIL "subject: $mailSubject\n"; print MAIL "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "{$from_msg}\n"; print MAIL "-------------------------------------\n"; print MAIL "以下の内容で送信されました\n"; print MAIL "名前: $mailName\n"; print MAIL "e-mail: $mailaddress\n"; close(MAIL); #display print "Content-type: text/html;charset=utf-8\n\n"; print "<html>\n"; print "<title>send result</title>\n"; print "<h1>send mail</h1><hr />\n"; print "以下のメールを送信しました<br />"; print "Name: $name<br />\n"; print "email: $mailaddress<br />\n"; print "</body></html>\n"; #サブルーチン メールアドレスにエラー sub mailerror{ print "Content-type: text/html;charset=utf-8\n\n"; print "<html>\n"; print "<title>mailaddress error</title>\n"; print "<body>\n"; print "<h1>send mail</h1><hr />\n"; if($nstatus == 1){ print "メールアドレスが入力されていません。<br />\n"; print "$nstatus<br />\n"; } if($mstatus == 1){ print "メールアドレスを正しく入力して下さい。<br />\n"; print "$mstatus<br />\n"; } if($dstatus == 1){ print "ドメインを選択して下さい。<br />\n"; print "$dstatus<br />\n"; } print "<a href=\"javascript: history.back()\">戻る</a><br />\n"; print "</body></html>\n"; exit; } exit;

    • ベストアンサー
    • CGI
  • INPUT NAMEの文字化け

    CGIがよく分からない者ですが、会社からホームページ管理を任されてしまいました。申込みフォームがよく使われるんですが、INPUT NAMEを日本語にすると文字化けになり、困っております。ご存知の方、どうか宜しくお願いいたします。 以下、CGIのソースです。 ************************************************* #本文タイトル $honbun_title = '■□ 申込 ■□'; #time #($sec, $min, $hour, $mday, $mon, $year, $wdy, $yday, $isdst) = Localtime(time); $clength = $ENV{'CONTENT_LENGTH'}; if($clength ne '') { read(STDIN, $query_string, $clength); @elements = split(/&/,$query_string); $i = 0; foreach $element (@elements) { (@name[$i], $buf) = split(/=/, $element); $buf =~ tr/+/ /; $buf =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*buf, 'jis'); @value[$i] = $buf; $i++; } &jcode'convert(*honbun_title, 'jis'); &jcode'convert(*ftitle, 'jis'); open (MAIL, "|$sendmail $trans"); print MAIL "From: $smail ($sname)\n"; print MAIL "Subject: $ftitle\n"; # print MAIL "$year\n\n" print MAIL "$honbun_title\n\n"; for($j = 0; $j < $i; $j++) { print MAIL "■@name[$j] : "; print MAIL ": @value[$j]\n\n"; } close(MAIL); print "Location: $query_file\n\n"; }

    • 締切済み
    • CGI

専門家に質問してみよう