« 久々にドツボにはまった('A`) | トップページ | 「バーチャル社会のもたらす弊害から子どもを守る研究会」について »

2006.04.13

半角カナ混じりのJISをSJISに変換するの巻

放置していたIRC用BOT「NGIB」用に色々探した時のメモ。NGIBの製作はそれでも着ちゃ…まぁまぁ進んでますw

コードはこんな感じです。$paramsにはPrivateメッセージのオプション部分が入ってます。

use Unicode::Japanese;
~~~~
my $message=Unicode::Japanese->new($params, 'jis')->get;
$message=Unicode::Japanese->new($message)->sjis;
print $message;

まず簡単に…、IRCのPrivateメッセージの形式は

:Arvined!~****@************.adsl.ppp.infoweb.ne.jp PRIVMSG #ngib :テスト

このような感じです。nick、username、リモートホスト、コマンド、メッセージターゲット、そしてメッセージの本文であるオプション部分です。オプション部分は、実際の文字コードはJISです。コンソールとかだと化けますね。
で。普通にJIS(ISO-2022-JP)だけであればEncodeモジュールを使ってshiftjisに変換すればいいのですが、LimeChatなどに搭載されている半角カナ送信機能によって半角カナが混ぜられたメッセージは、上手く変換できません。

そこで。Unicode::Japaneseモジュールを使います。ppmじゃインストールできないのでどうにかCPAN環境を整えてインストールしてください(ぉ
まず1行目でモジュールを指定します。これはお約束。3行目ではJISコードからUTF8に変換、4行目でUTF8をShiftJISに変換しています。なぜ一旦UTF8に変換しているかというと単純な話で、直にJIS→ShiftJISの変換が出来ない…っぽいからです。
これで半角カナ交じりのJISコード文字列もShiftJISで表示することが出来ます。print $message;でShiftJISに変換されたメッセージの中身が表示される筈です。

|

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/13747/9563102

この記事へのトラックバック一覧です: 半角カナ混じりのJISをSJISに変換するの巻:

コメント

コメントを書く



(ウェブ上には掲載しません)