WIDE系 IRCで使われている、IS2022JPの(いわゆる)半角カナにはいろいろ種類がありますが、これをPerlでコード変換しようとした場合、Encodeモジュールではコード変換に失敗してしまいます。(2008年6月6日0:20追記:Encodeモジュールでは半角カナの認識に失敗するだけで他のコードは自動認識します)(2008年6月7日0:50訂正)
筆者の間違いでした。Encodeモジュールメンテナンス各位の方へお詫びいたします。
この場合、skfを使うと解決できます。(2008年6月7日0:50訂正)
Encodeモジュールでも変換できますが、今回はskfを使った方法を紹介します。
→SourceForge.JP: Project Info - skf - simple kanji filter
skfにはPerlエクステンションがあり、エクステンションを使うと解決できます。
Perlエクステンションの導入方法
上記のURLからソースコードをDLして、
>configure >make perlext
これで、Skf.pmとSkf.soファイルができますので、
>sh ./scripts/find-perl
の結果を元にSkf.pmとSkf.soを移動します。
私の環境では、結果が /usr/local/lib/perl5/5.8.8/mach/CORE でしたので、
/usr/local/lib/perl5/5.8.8 に Skf.pm を
/usr/local/lib/ に Skf.so をおきました。
動作確認用コード
#!/usr/local/bin/perl
use Skf;
my $test = Skf::convert("--ic=CP932 --oc=UTF-8", "\x82\xA0");
print $test . "\n";
"--oc"が出力コードですので、任意のコードに変えて「あ」が出ることを確認してください。
パラメータの詳細は、ヘルプを見ましょう。
注)この記事はhttp://d.hatena.ne.jp/UnderDone/20061031/p1より筆者が転載



Leave a comment