POPFile : 件名が文字化けする件とか
フォントの問題が解決した所で、メーラーをセットアップした。
とりあえず、Windows環境で使っていたのと同じThunderbirdにして、POPFileで自動振り分けの設定の環境を再構成した。
で、いちおうちゃんと動くようになったのだけれど、POPFileコントロールセンターの履歴タブやメッセージビューで件名や差出人などのヘッダー情報に含まれる日本語が文字化けする。
POPFileのFAQによれば、ヘッダー部がMIMEエンコーディングされていないからだということで、spamメールくらいしかそういうことは起こらないと行っているのだけれど、どうみても普通のメールでも化けている。
なにが悪いのかわからないけれど、これはこのままでは使えない。
-
-
- -
-
使えないというほどではないということがわかった。でも、納得行かないので調べる。
ところで、Linux側でPOPFileとThunderbirdを動かしているのだけれど、マシンパワーがあるため、かなり高速に振り分けが動作する。
これまで、ノートPCでPOPFileを動作させていたときはかなり遅かったので、非常にありがたい。
-
-
- -
-
dbの中をチェックして、ソースコードを追いかけても、どうしてもMIMEエンコーディングの関連で文字化けるような要因が見付からなくて、困っていたところ、ふと思って、ブラウザの文字コードを買えてみたら、ISO-2022-JPにしたところ、タイトルが正しく表示された。
どうも、本文部の文字コードとタイトル部の文字コードが違うコードで表示されているようだ。
もうすこし調査を進める。
-
-
- -
-
関係しそうな所に、iso-2022-jpからeuc-jpへの変換をはさんだら、正しく表示されるようになった。って、これってバグじゃないの?
以下、パッチ。
*** HTML.pm.new 2007-04-07 23:06:09.000000000 +0900 --- HTML.pm 2007-04-07 22:57:55.000000000 +0900 *************** *** 36,42 **** use Digest::MD5 qw( md5_hex ); use HTML::Template; use Date::Format; - use Encode; # A handy variable containing the value of an EOL for the network --- 36,41 ---- *************** *** 2469,2483 **** } $row_data{History_Arrived} = $self->pretty_date__( $$row[7] ); ! $row_data{History_From} = encode('euc-jp', decode('iso-2022-jp', $$row[1])); ! $row_data{History_To} = encode('euc-jp', decode('iso-2022-jp', $$row[2])); ! $row_data{History_Cc} = encode('euc-jp', decode('iso-2022-jp', $$row[3])); $row_data{History_Date} = $self->pretty_date__( $$row[5] ); ! $row_data{History_Subject} = encode('euc-jp', decode('iso-2022-jp', $$row[4])); ! $row_data{History_Short_From} = encode('euc-jp', decode('iso-2022-jp', $self->shorten__( $$row[1], $length ))); ! $row_data{History_Short_To} = encode('euc-jp', decode('iso-2022-jp', $self->shorten__( $$row[2], $length ))); ! $row_data{History_Short_Cc} = encode('euc-jp', decode('iso-2022-jp', $self->shorten__( $$row[3], $length ))); ! $row_data{History_Short_Subject} = encode('euc-jp', decode('iso-2022-jp', $self->shorten__( $$row[4], $length ))); my $bucket = $row_data{History_Bucket} = $$row[8]; $row_data{History_Bucket_Color} = $self->{c__}->get_bucket_parameter( $self->{api_session__}, $bucket, --- 2468,2482 ---- } $row_data{History_Arrived} = $self->pretty_date__( $$row[7] ); ! $row_data{History_From} = $$row[1]; ! $row_data{History_To} = $$row[2]; ! $row_data{History_Cc} = $$row[3]; $row_data{History_Date} = $self->pretty_date__( $$row[5] ); ! $row_data{History_Subject} = $$row[4]; ! $row_data{History_Short_From} = $self->shorten__( $$row[1], $length ); ! $row_data{History_Short_To} = $self->shorten__( $$row[2], $length ); ! $row_data{History_Short_Cc} = $self->shorten__( $$row[3], $length ); ! $row_data{History_Short_Subject} = $self->shorten__( $$row[4], $length ); my $bucket = $row_data{History_Bucket} = $$row[8]; $row_data{History_Bucket_Color} = $self->{c__}->get_bucket_parameter( $self->{api_session__}, $bucket, *************** *** 2561,2570 **** my ( $id, $from, $to, $cc, $subject, $date, $hash, $inserted, $bucket, $reclassified, $bucketid, $magnet ) = $self->{history__}->get_slot_fields( $self->{form_}{view} ); - $from = encode('euc-jp', decode('iso-2022-jp', $from)); - $to = encode('euc-jp', decode('iso-2022-jp', $to)); - $cc = encode('euc-jp', decode('iso-2022-jp', $cc)); - $subject = encode('euc-jp', decode('iso-2022-jp', $subject)); my $color = $self->{c__}->get_bucket_color( $self->{api_session__}, $bucket ); --- 2560,2565 ----