カレッヂ |
質問者 tnpn
投稿日 4/18(木) 11:51:34
質問させて下さい。 CGIでHTMLを表示させる場合にリンクをクリックしたらメールが出てくる...。という ようなモノを作りました。 作成したのですが、リンクをクリックするとメールちゃんと出てくるのですが、どうしても件名の個所が文字化けしてしまいます。 ブラウザでステータスバーで確認すると、文字化けをしていなくてちゃんと表示されています。 ブラウザのエンコードは自動設定になっているし、CGIがおかしいのか原因がよく分かりません。 ちなみにブラウザはIE5.5を使用しています。 分かる方いましたら、よろしくお願い致します。 下記のように書きました。 $atcl_subject =~ s/^Re:\s*// ; $atcl_subject =~ s/^RE:\s*// ; $atcl_subject="Re: $atcl_subject" ; print "投稿者:<A HREF=\"mailto:$atcl_email?subject=$atcl_subject\">$atcl_from</A>\n" ; |
回答者 今夜はやすだ
[削除]
投稿日 4/18(木) 12:46:14
RFC1522で、Mailのヘッダーに日本語を使うには、iso-2022-jpにし、 それをbase64でエンコードして =?ISO-2022-JP?B? と ?= で括れとありますんで、 そうしましょう。 その際、もちろん、jcode.plかJcode.pmとMIME::Base64.pmかmimew.plを必要とします。 ちなみに、Jcode.pm+MIME::Base64.pmの組み合わせでは、 use Jcode; use MIME::Base64; my $encoded='=?ISO-2022-JP?B?'.MIME::Base64::encode_base64(jcode($target,&Jcode::getcode($target))->iso_2022_jp,'').'?='; てな感じになります。 |
回答者 今夜はやすだ
[削除]
投稿日 4/18(木) 23:46:14
decodeの場合でしたね。すみません。 メールを取り込んで、MIMEエンコードされたSubjectを直して表示が目標ですよね。 $targetには、Subject行が入っているとして、 use Jcode; my $jconv=Jcode->new($target); my $decoded=$jconv->mime_decode->sjis; で$decodedに日本語sjisの文字列に変換されて出てきます。 上で、use MIME::Base64;とありますが、JcodeでMIME::Base64を組み込んでいるんでなしでもいいです。 |
質問者 tnpn
[削除]
投稿日 4/24(水) 14:56:22
ありがとうございました。 EUCだと文字化けって直らないんですかね?? convertしても駄目でした...。 HTMLをS-JISで表示させるとOKでした。 日本語の入った件名つきのメールのリンクはS-JISで表示するようにします。 修正する糸口が見つけられて助かりました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |