02 October '2003 - 01:17 | 雑記 文字化けの理由
ときどき使う Squirrel mail で、長い本文の一部が化けることがあったのだが、mb_convert_encoding() のバグなんだろうと思って特に調査してなかった。 が、今日、小泉首相からのメールを読んでたら肝心なところが化けててちょっと悲しい思いをしたので、仕方なく治すことにした。まず、化けた本文の生データをメールスプールから直接読んで UTF-8 に変換させてみたら、なんと化けなかった。げ、PHP のせいじゃなかったのか。疑ってごめんなさい。
次に、IMAP サーバに接続してデータを FETCH してみて、当然それが問題ないことを確認した。つまり、Squirrel mail が FETCH しているデータは問題がなく、その後のどこかで化けているということがはっきりした。
FETCH してからブラウザに出力するまでのコードを全部追うのも面倒なので、てきとうにあたりをつけて一時ファイルにデータを書き出すデバグコードをいくつか入れて探ってみた。したら、なにが原因かすぐに分かった。
つまり、CRLF ではなく LF で終わる行があったのだった。なんでそんなことになるのかは、面倒なので気にしないことにして、とりあえず、本文をデコードする前処理として、LF だけのところは捨てることで解決することにした。
いい加減なハックともいえるが、一応理屈が通ってて、ちゃんと動くなら、それはそれでヨシとして深追いしないのも手なのだ。とりあえず、ちゃんと動かすことが目的なのだしね。それに、ツケは請求されたら払えばいいのであって、永久に請求されないかも知れないツケの心配など、暇なときに暇つぶしにすればいいのだ。
dany () (ウェブサイト) - 13 February '2006 - 16:33