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";