[CGI覚書]フォームから飛ばすメールが文字化けinサンダーバード(>_<)
自分が作ったフォームじゃないのだが、7~8年くらい前のsjis仕様のCGIフォームの話です。
OutlookやGmailでは正常に見えているのですが、サンダーバードだけ、
本文が文字化けしております。菱形白抜きの?マークがうようよしてます(>_<)
サンダーバードの方で文字コードをShift-jisに変換すると正常にはなりますが、
気になって色々調べたところ、
サンダーバードは、ヘッダーに設定されてる文字コード厳守で
表示させるので、文字化けしてしまうとのこと(>_<)
OE等はそのへん融通を効かせて表示させてくれてるみたいです。
このへんIEとfirefoxの仕様とやっぱり似てますね(汗)
<参考>
★Thunderbirdで文字化けを直す
Thunderbirdの開発側の見解としては,このようになるのは送信側の問題であり,受信側の問題ではないので,Thunderbirdでは対応しないそうです.Outlookなどでは,ヘッダでの文字コードの宣言を信用せず,本文の文字コードを解析して判断するそうです.(これも,Outlookが重い原因の一つですかねぇ)
結局うまくいかなかったですが、下のスレを参考に色々いじくってみました。
今までiso-2022-jpとかあまり意識してなかったんで、メールの文字コードの勉強には、多少なりました。
★CGIフォームから飛ばすメールがMacのMailで本文だけ文字化け
ここで質問されている方は、
&jcode'convert(\$comment,"jis");
でうまくいったようです。
今回のプログラム中にも、以下の件名(Subject)の文字化け対策がされてて
こちらはうまくいっているようだったので、
&jcode'convert(*Subject,"jis");
真似して、
&jcode'convert(*comment,"jis");
や
&jcode'convert(\$comment,"jis");
に変えてみたのですが、だめでした。
ちなみに逆にshift-jisに揃えると、サンダーバードでは見えるようになったのですが、
OEで文字化けしていたようです。
それにメールの文字コードはそもそもiso-2022-jp(jis)が推奨なので、
sjis揃えはなしなんだなぁと後から気が付きましたが。
$WriteData .= "Content-Type: text/plain; charset=iso-2022-jp\n";
↓ ↓ ↓
$WriteData .= "Content-Type: text/plain; charset=shift-jis\n";
shift-jis揃えにした場合は、逆に件名のjis変換を削除しないと件名が文字化けする。
&jcode'convert(*Subject,"jis");
ディスカッション
コメント一覧
まだ、コメントがありません