こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

ホームページビルダー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";

投稿日時 - 2012-04-11 15:18:04

QNo.7415305

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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

 フォームの文字コードをShift_JISに変換してみたらいかがでしょう。

投稿日時 - 2012-04-11 20:04:35

あなたにオススメの質問