さくらインターネットのCGIで作ったメールフォームで送信すると文字化けしてしまいます。容易に直ると思いきや、まったく手の施しようがありません。どなたか教えていただけますよう宜しくお願いします。
さくらインターネットには解決方法として以下の方法が挙げられています。具体的な方法を聞いたところサービスの対象でないとのことでした。
「MacOS X」と、ウェブブラウザ「Safari」や「Internet Explorer (IE)」の一部のバージョンの組み合わせで、記号を入力すると文字化けを起す現象が報告されています。ブラウザの仕様またはバグによるものと考えられますので、ブラウザを変えてお試しください。
過去に文字化けになった方の質問も多くあるようでかぶってしまい申し訳ないのですが具体的な対処方法を宜しくお願いします。
No.6ベストアンサー
- 回答日時:
>もし他に対処法を思いつかれるようでしたら是非お教え下さい
一点思いつきました。
送られてきたメールのヘッターをみてください
(OutlookExpressであればメールを選択し右クリック→プロパティ→詳細)
Content-type: text/plain;charset="ISO-2022-JP"
が記述されているでしょうか?
もし、
Content-type: text/plain;
だけでしたら、
"Content-Type: text/plain;\n\n";
と記述されているところを探して、
"Content-type: text/plain;charset=\"ISO-2022-JP\"\n\n";
に書き換えてみてください
この回答への補足
こんにちは。ありがとうございます。
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
とありました。概ね良いようですが、 "" が無いのは関係あるのでしょうか?
いろいろ教えてくださり本当にありがとうございました。
ジャングルという会社にはコンピューターの故障って言われました。
もう少し検討したいと思います。
No.5
- 回答日時:
SendMail.plのその箇所の最初に
$charset = &jcode::getcode(\$body);
を追加しただけで効果があるかも知れません
(半角カタカナだけでメールが書かれたら文字化けしますが)
formの中に判別用のコードを追加した場合は、
&jcode::getcode(\$form{'codeck'});
※$form{'codeck'}はcgiの入力部に依存するので参考までに書いているだけです
この回答への補足
こんにちは。素人の私にいろいろと教えていただきありがとうございます。
上記の事項や今までお聞きしたことをいろいろと試してみたのですが
特に変わった変化はありませんでした。
もし他に対処法を思いつかれるようでしたら是非お教え下さい。
もし見つからないようであれば、明日にでも一度cgi作成者に問い合わせてみようと思います。
お礼のポイントが最大20ポイントしかないことが大変悔やまれます。
宜しければもう少しお教えいただけますようにお願い致します。
No.4
- 回答日時:
>ファイルのダウンロードというものが始まり
actionのcgi指定先の問題かな?と思います
(actionで送り先はhttp://~で指定してある訳じゃないですよね)
$charset = 'sjis';
の一カ所で後で何に変換するかを決めていると思います
&jcode'convert(*key, 'sjis');
ではなく、
&jcode'convert(*key, $charset);
の様に書いてあるはず
convertは、
SendMail.pl
mimer.pl
mimew.pl
のどれか(or全部?)に入っていると思います
※どこかで配布されているcgiでしたらurlを書いてみてください
この回答への補足
お返事ありがとうございます。
配布はされてないんです。
ビルダーのデザインテンプレートビジネス版で、ジャングルというところが出しているものです。設定は簡単に出来るように説明書には書いてあるのですが、今回の件以外にも修正ばかりです。。
一度今回教えていただいた修正を試してみます。
本当にご丁寧にありがとうございます。
mimer.plに以下の記述がありました。
## charset=`ISO-2022-JP',encoding=`B' の encoded-word にマッチするパターン
$match_mime = '=\?[Ii][Ss][Oo]-2022-[Jj][Pp]\?[Bb]\?([A-Za-z0-9\+\/]+)=*\?=';
SendMail.plには以下の記述がありました。
# 半角カナを全角カナに変換,文字コードをJISに変換
&jcode::convert(\$to_name, 'jis', $charset, 'z') if $to_name;
&jcode::convert(\$from_name, 'jis', $charset, 'z') if $from_name;
&jcode::convert(\$subject, 'jis', $charset, 'z') if $subject;
&jcode::convert(\$body, 'jis', $charset, 'z');
3回見直しましたが、これ以外には見当たりません。
No.3
- 回答日時:
<form action="mail.cgi" method="POST">
~省略~
<input type="hidden" name="codeck" value="あいうえお">
</form>
のようにformの中に識別用のコードを入れます。
cgiの最後辺りに、
sub conv_s{
my($dt,$ck)=@_;
my($n,$icode)=&jcode'getcode(\$ck);
$$dt = &jcode'sjis($$dt,'euc') if($icode eq 'euc');
$$dt = &jcode'sjis($$dt,'jis') if($icode eq 'jis');
}
こんな感じのサブルーチンを置き、
&jcode'convert(*key, 'sjis');
などとconvertを使っている所を
conv_s(\$key,$form{'codeck'});
に置き換えます(※入力データが$form{'codeck'}に入るかどうかはcgiの中身を見てください)
この回答への補足
こんばんは。ご丁寧にありがとうございます。
<input・・・あいうえお">の部分をhtmlに入れてみました。下には何も無かったのでビルダーのプレビューから試しに送信してみました。
すると、ファイルのダウンロードというものが始まり、終わる気配がありません。そこで一旦閉じてビルダーを開けてみると修正があるとのコメントと同時にcgiが自動的に出てきました。
cgiも見てみたのですが、&jcode'convert(*key, 'sjis');などとconvertを使っている所はありませんでした。変わりに、
エンコード$charset = 'sjis';というのがありましたが何か関係あるのでしょうか?
このcgiは、他に contact_conf.inc contact_error.inc contact_thanks.inc body mac default_css.js win_ie.css win_nn.css FormData.pm KCatch.pm SendMail.pl mimer.pl mimew.pl jcodeがあります。
jcodeには、&jcode'convert(*line, $ocode [, $icode [, $option]])
というものがあるのですが、教えていただいたものは見当たりません。これでよいのでしょうか?
ANo.4の補足です。
それぞれの番号のファイルに以下の記述がありました。
(1)FormData.pm
#--半角カナ→全角カナ変換----------------
&jcode'h2z_sjis(*value);
&jcode'convert(*value,'sjis');
(2)KCatch.pm
if( $argv->{jcode} and defined $jcode::version ) {
1 if defined $jcode::version; # (not typo)
foreach my $str ( @$oarray ) {
&jcode::convert( \$str, $argv->{jcode} );
jcodeのファイルにはjcode convert が良く出てきます。
この辺も関係あるのでしょうか?
No.1
- 回答日時:
恐らくShift JISやEUCなどのコード判定でミスがでるのだと思います
(jcode.plなどで変換しているんですよね?)
この場合はメールフォームに隠しフィールドを追加して、
<input type="hidden" name="codeck" value="あいうえお">
などとしておき、
cgi側で何のコードがこれで判定して決めうちで変換するようにすれば治ると思います
この回答への補足
こんにちは。ご丁寧にありがとうございます。
jcode.plで変換しているかどうかわかりませんが、jcode.plファイルがあるのでそうだと思います。
<input type="hidden" name="codeck" value="あいうえお">
は具体的にどの場所に置けば良いのでしょうか?
追加の質問になりますがどうか宜しくお願い致します。
(1)シフトJISですと、お名前、メールアドレス、内容、送信内容をご確認の上、ご送信下さい、などのこちらが用意したタイトルや文章は文字化けしません。
(2)Unicode(UTF-8)ですと、相手の回答内容だけが文字化けしません。
(3)EUOですと、どちらも文字化けします。
補足の補足ですがお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
cgi アクセス制限 エラー
-
フォームを再送信しますか?
-
apacheでPerl CGIが作動せず、5...
-
-T(汚染モード)でメールが送れ...
-
CUIとGUIについて
-
フォームメールを受信すると文...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
-
ホームページの事でおしえてく...
-
さくらサーバーにcgiフォームを...
-
ホームページでCGIのフォームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Rubyのmechanizeを利用したファ...
-
(Perl)ReadParseによるハッシ...
-
WEB上のボタンをクリックしてサ...
-
VBAでIEを操作submit処理について
-
VBで表示したホームページの...
-
さくらインターネットのCGI...
-
perlで自動ログインをしたいが...
-
CGIのボタンの処理について
-
フォームに入力した情報をその...
-
CGIのメールフォームエラーにつ...
-
[Netscape Communicator 4.7]×[...
-
リンクからのPOST送信について
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
wordの数式について 定積分を書...
-
WEBページを強制的に横画面で見...
-
select値をhiddenのvalueに渡し...
-
別formのhidden項目を自form値...
-
チェックボックスの返す値
-
INPUT TYPE
おすすめ情報