トップ(最新)

nDiki : "B" encoding

Related term

2004年1月25日 (日)

[ WiKicker ] 通知メールの Subject: フィールドのエンコーディング修正 このエントリーを含むはてなブックマーク

WiKicker には通知メールの Subject: フィールドがたまに壊れている問題があるのだが、ずっと放置しておいたままだった。 そろそろ次のバージョンをリリースしたいと思うので、今回修正しておく。

結果半日かかってしまった。

@ MIME::Words::encode_mimewords

まず現在エンコーディングに使っている MIME::Words::encode_mimewords (5.404)であるが、マニュアルを見ると charset によってはマズいエンコーディングを吐くらしい。 WiKicker で Subject: ヘッダが壊れるのも、この問題のせい。 文字境界を無視してぶったぎってエンコードされてしまう。 ということで、自前でエンコードする事にする。

@ 自前エンコーダ

まぁたいしたものではないが。 最初はエンコードする必要のある部分だけ encoded-word にする事も考えたのだが、面倒なのでやめ。 全部エンコードしてしまう事にする。 エンコーディングも最初は、"Q" encoding で実装しはじめたのだが(MIME::Words のデフォルトがそうなので、WiKicker でもそれを使っていた)ちょっと面倒なので、"B" encoding に変更。

@ タイトルの途中に空白が入ってしまう?

で、テスト。うーん。途中に余分な空白が入ってしまうな。 mew で受信したメールを見ると folding のところで余分な空白が入って表示される。 RFCとか見ても encoded-word に挟まれた CRLF SPACE は無視されるはずなんだけれどなぁ。

UTF-8 の代わりに ISO-2022-JPにしてみたりとか、エンコーディングを変えてみたり(Q or B)したのだが変わらず。 他から受けとっているメールは問題ないから、mew の問題でもなさそうだし。

ん? mew の inbox を確認してみると、他のソフトからのは \n, space でフォールディングされているな。 今書いているコードから送ったやつは \r\n, space でフォールディングされている。 RFC的には CRLF space では?

@ 問題は別のところに

WiKicker で \r\n, space でフォールディングしているところを \n, space でフォールディングするようにしたら直る。 けど、これでいいのかな?

って良く考えたら、他の部分はヘッダでも本文でも改行には \n を使っているんだった(Perl のヒアドキュメントを使っているので)。 ということは今まで、それを標準入力から受けとった sendmail が LFCRLF にしてくれていたのか。 あまり深い事考えてなかったな。 今回はフォールディングのところだけで CRLF にしたため 一個余分に CR がついてしまい、それがタイトルの文字列中の空白として表示されてしまったと。

結局疑うべきは自分のコード。

スポンサード リンク


[ 1月25日全て ]

■よく検索されるキーワード

perl(47) windows(44) 提案書(43) ドラマ(39) cvs(36) debian(31) linux(27) ほぼ日手帳(27) torrent(24) x31(24) 書き方(23) 使い方(23) サンプル(23) ganttproject(20) java(19) wiki(18) thinkpad(17) tc-1(17) 壁紙(15) アジェンダ(15) 作り方(15) ノート(14) 動画(14) usb(14) アジェンダとは(13) google(13) 手帳(12) ヨドバシカメラ(12) subversion(12) apache(12) ウォーターボーイズ2(12) インストール(11) ssh(11) フリー(11) centos(11) 2008(11) 影舞(11) c#(10) 画像(10) 秋葉原(10) svn(10) rcs(10) 日本語(10) リフィル(10) ほぼ日(10) tortoisesvn(10) 修理(10) ボールペン(9) cgi(9) 本名(9) ポーター(9) dvd(9) usbメモリ(9) クラリチン(8) web(8) 2009(8) a6(8) make(8) ヨドバシ(8) ubuntu(8) truecrypt(8) gtd(8) 設定(8) 写真(8) so905ics(7) ガントチャート(7) activeperl(7) 万年筆(7) 無料(7) svn+ssh(7) 冷蔵庫(7) ツール(7) バッグ(7) porter(7) gantt(7) project(6) firefox(6) scons(6) eclipse(6) flash(6)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 1.19861s / load averages: 0.83, 0.63, 0.63
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)