- 締切済み
postmail ver4.3でメールを送ると文字化けしていまいます
web作成、cgiの初心者です。 現在postmailを利用してメールフォームを作成しました。エンコーディングはutf-8です。作成したメールを送ると、受け取ったらタイトル以外全て文字化けしています。 ググってみるといろんな方の方法があり、かなり改造をしないといけないようでいくつか試してみましたが、どうもうまくいきません。 出尽くしているのかも知れませんが、私の理解では解決することができません。よろしければ解決方法、もしくはベストなサイトを教えてくださいませ。 お手数おかけしますが、よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ryu_chan
- ベストアンサー率37% (69/186)
おそらく、Shift-JISの文字であっても強引にUTF-8と解釈して変換したのが文字化けの原因ではと思います。 文字コードを推測して変換するようにしました。 これでも文字化けは起こりますでしょうか? 642、643行目の以下を &jcode::convert(\$key, 'sjis'); &jcode::convert(\$val, 'sjis'); ↓ ↓ use Encode qw(from_to); use Encode::Guess qw(cp932); for my $data ( $key, $val ) { my $enc = guess_encoding($data); my $char_code = ref $enc ? $enc->name : $enc =~ /utf8/ ? 'utf8' : 'cp932'; from_to($data, $char_code => 'cp932'); } に変更。 >No.2さん useを使うとモジュールをロードをして必ず実行されるので、必要なときにロードされるrequireにしてみました。 ただコードをよく見ると、この部分は必ず実行されるようなので、requireにしてもパフォーマンスの改善にはならないかもしれません。
- 藤田 朋郎(@hujitomo)
- ベストアンサー率54% (39/71)
> require Encode; これじゃ駄目だと思います・・・ use Encode; Encode::from_to($key, 'utf8' => 'cp932'); Encode::from_to($val, 'utf8' => 'cp932'); こうでは?
- ryu_chan
- ベストアンサー率37% (69/186)
ダウンロードして中身を見てましたが、以下の修正でうまくいきますでしょうか? 642、643行目の以下を &jcode::convert(\$key, 'sjis'); &jcode::convert(\$val, 'sjis'); ↓ ↓ require Encode; Encode::from_to($key, 'utf8' => 'cp932'); Encode::from_to($val, 'utf8' => 'cp932'); に変更。
お礼
早速のアドバイス有難うございます。 やってみたのですが、全体としては文字化けの量は減ったのですが、違う個所が文字化けになりました。 以下のような感じです。以前は送信日時以下も文字化けしていました。 アドバイスありましたら、よろしくお願い致します。 以下フォームより送信したメール内容です *********************************************************** このメールは自動送信でお送りしています。 以下のとおりフォームメールより送信がありました。 ──────────────────────────── ▼送信内容 ──────────────────────────── ?????O = ?????? aaa ?????? aaa ???N?? = aa ?A????\??d?b??? = aaa ???[???A?h???X = aaa ?????O = ?????? aaa ?????? aaa ???]?c??? = ?????c??? ???????z = ?O?`?P?O?O???~ ??????????? = ?P?? ??????N?? = ?P?`?R?N ???X??????? = ??? ??ω?\?z(????) = ?P???~ ???p??(?K?{) = aaa ──────────────────────────── 送信日時 : 2009/12/16(Wed) 22:41 ブラウザ : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6.3; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) ホスト名 : 222.226.122.247 ────────────────────────────