« 9月1日の某サーバの通信量グラフ | メイン | マルコフ連鎖による文章生成 »

Unicode::Japanese

BlogSurfで、Jcodeのエンコーディング判定で書いたconvert_to関数を使ったが見事玉砕
utf-8文字列からeucへの変換ができないことが多々。

Unicode::Japanese - 日本語文字コード変換
を使ってみることにした。
Jcodeは内部的にEUC-JPを使うのに対して、UTF-8を使う文字コードの変換モジュール
XSにも対応、imodeやJ-skyにも対応
使い方はJcodeとほぼ同じ

$utf8 = Unicode::Japanese->new($str,"文字コード")->utf8;


自動判定するには、文字コードに「auto」を入れる。
でも、やはり他の手段と同じく文字コードの自動判定は失敗することがあります。
そろそろ自動判定はあきらめよう。
XML::Parserからの出力はどちらにしろ、utf-8に統一されているので、自動判定は必要ない。
ただ、CGIのクエリーから来た場合は、自動判定する必要があるけど、とりあえず無視。

ちなみに、

If a character cannot be mapped to SJIS from Unicode, it will be converted to &#dddd; format.

という機能があるため、UTF-8からEUCに変換する時
「〜(にょろ)」は〜となります。これがあるので文字化けはしない。便利。

こっちをしばらく使ってみることにする。