Jcode.pm

UTF-8 は元々キライだけど、大嫌いになりました、という話。

Jcode.pm のバージョン0.83から0.85の変更で、文字コードの判別が変更になっています。文字コードの判別というのは実は相当難しい問題で、文字セットの問題とともに大問題なのでございます。

Jcode.pmが採用している判別方法: 頭から文字を調べてsjisっぽい場合はsjisポイント+1 eucっぽい場合にはeucポイント+1 のようにそれっぽい文字コードにポイントを+1し、最後に点数の高かったものが文字コード。日本語文字はsjisでもeucでも2バイトだけど、utf-8は3バイト分使うからutf-8ポイントは1.5倍して評価しよう、という変更がバージョン0.85での変更。

おかげでutf-8の認識率は上がったけど、EUCSJISの誤認識率もついでにUPしちゃいました。どっちが良いとか悪いとかは言えない問題だけれど、困った。

ついで情報。今日はじめて知ったんだけど、Jcode.pmの機能はperl 5.8以降 Encode というモジュールに吸収されたんだそうな。使い方変わっててとっつきにくい。