去年 12 月の大メンテで、WritebackPlus_Custom_06 プラグインを入れたんでよね。 機能的にはかなり満足しているのですが、コメントにて一部の文字が化けるようになったんですなぁ。 具体的には“~”とかがですな。
まぁ原因はなんとなく判っていて、新しいプラグインでは投稿文字列を Jcode.pm で処理する部分があり、Jcode.pm 上のマッピングが Winodws の実装と異なるので化けるんだろうなぁ、とね。
これについては、実は入れた時にはもう判っていて、実用上問題無いかなと思って放っていたんですよ。 しかし、“~”という文字は思いの外使われるんですなぁ。( < 自分もよく使うだろうが!!! ) コメントが化けた方、すみませんです。 > ALL
んで、今日思い立って、Web を散歩したところ、「既存の日本語文字コードと Unicode の間のマッピングルール」や「 Jcode.pm を Windows 2000 でコンパイルする」とかいうページを見つけたので、対策を施すことにしたのであった。 どんどんぱふぱふー。
ここで“~”だけに着目して、WritebackPlus_Custom_06 プラグインに例外処理を仕込むってのも考えたのですが、Jcode.pm を Windows なマッピングで使っている時には必ず化けるだろうから、根本的な対策として Jcode.pm を書き換えることにしました。 うむ。
具体的には上の 2 つ目のページの記述を参考にして、 Perl/lib/Jcode/Unicode/Constants.pm の UCS2 -> EUC-JP 変換表をゴリゴリ書き直したのだな。 なので“~”以外でも“\”や“-”等についても変換表をいじりました。
結果、少なくとも Windows OS + IE エンジンな投稿では化けなくなりました。 他の実装では逆に化けるかもしれませんが、まぁウチ自身がその環境をメイン使ってるってことなんで許してください。
上の 1 つ目のページを読むと、Windows での実装はずいぶんヤヤコシくて驚きますなぁ。 まぁ、過去との互換性があるので一筋縄ではいかないのは判るのですが、そこらあたりも Unicode を作る時に織り込めば良かったんじゃないのかなぁ…。 これでは、MS 漢字 ( Shift-JIS ) の悪夢再びですわ。 あうー。
追記 : ウチのトコでは、ActivePerl build 809 ( Perl v5.8.3 ) を使ってます。 いままで書いてなかった書いておきますね。 まぁ、現時点で、ですが。