- 締切済み
フォームの日本語が文字化け
ホームページビルダー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";
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
フォームで送信する場合、何も指定が無ければそのフォームの書かれている文字コードで送信されます。文字コードを指定する場合は<form>要素にcharset属性でコードを指定しましょう。 jcode.plを使うとは、随分と古いCGIのようです。現在のperlには、encode.pmが標準で含まれている。 フォームの文字コードをShift_JISに変換してみたらいかがでしょう。