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に変換する時
「〜(にょろ)」は〜となります。これがあるので文字化けはしない。便利。
こっちをしばらく使ってみることにする。