ご無沙汰のエントリーはたぶんあまり需要のないネタです。
未だに自宅ではircを眺めるのにMayuki Sawatari氏作のIrcvを使用しているのですが、IrcvはircサーバーとのやりとりにJISコードのみが流れることを想定しており、freenodeなどのUTF-8だと文字化けしてしまうのを何とかしてみよう、というものです。
※もっともtiarraを使用してUTF-8からJISに変換すればよいのですが、我が家ではこの機会にすべてUTF-8にしてしまったので(汗)
とはいえIrcvはC#で書かれており、そもそも内部のエンコーディングにはUTF-8が使用されているので、単にJISコードへの変換部分を取っ払ってしまえばよい、ということになります。
具体的には、IRCClient.csの155行目と156行目、
_sr = new StreamReader(_nstream, Encoding.GetEncoding(“ISO-2022-JP”));
_sw = new StreamWriter(_nstream, Encoding.GetEncoding(“ISO-2022-JP”));
と書かれている部分を、
_sr = new StreamReader(_nstream);
_sw = new StreamWriter(_nstream);
のようにしてしまえばよいわけです。
これだと結局UTF-8決めうちで美しくないじゃん、という方もいらっしゃると思いますが、その場合はConfiguration.csやircv.csにも追加で書き加えて、環境設定ファイルから文字コード指定を読み込み、それをIRCClientのインスタンスに渡して設定させる…というコードにすればよいでしょう。(全部いじっても全部で15行程度追加するくらいでいけます)
ソースコードの編集とコンパイルが面倒くさい、という方向けにZIPファイルを用意しました。ファイル内のデータはESET NOD32 Antivirusにてウイルススキャン済みですが、ウイルスが含まれていないことを100%保証するものではないことにご留意ください。
文字コードの指定は環境設定ファイル内にircv.charsetを追加することで行います。設定例は同梱のdefault.sample.xmlをご参照ください。
20100321-ircv-20040331-UTF8.zip
※ライセンスはオリジナルのIrcvに準拠しています。
※この配布ファイルを使用したことで生じたいかなる問題にも、オリジナルの作者様および改変者は応じる義務のないものとします。
“IrcvでUTF-8が通るように変更する” に対するコメントはありません。