Unicode::Japaneseについて

全角アルファベットを半角に変換するため、Encode.pm(昔のjcode.plやJcode.pm)を調べましたが、これ自体には全角→半角変換する機能は無いようだったので、Unicode::Japaneseを利用しました。

Unicode::Japaneseの全角→半角変換をする関数(z2h)はUTF-8のみ対応だったので、
当初はEncode.pmでShift JISの全角アルファベットをUTF-8に変換しました。
ところが、全角のハイフン”-”が半角のハイフン”-“でなく、UTF-8のハイフンになり、うまくいきませんでした。

このことをUnicode::Japaneseの作成者である「みかげ」氏に問い合わせたところ、とても丁寧に対応してくださり、Encode.pmの文字コードマッピングに問題があるということがわかりました。また、Unicode::Japaneseで全ての処理を行う方法も教えてくださり、無事に解決しました。

みかげ様、本当にありがとうございました。

以下サンプルです。

use Unicode::Japanese;
$str_z = "AB-123";
$str_z_utf = Unicode::Japanese->new( $str_z, 'auto')->getu;
$str_h = Unicode::Japanese->new( $str_z_utf )->z2h->get;
print "Zenkaku: ", $str_z, "\n";
print "Hankaku: ", $str_h, "\n";

【参考】
CPANのUnicode::Japanese

コメント

タイトルとURLをコピーしました