ZNCでISO-2022-JPなサーバの日本語チャンネルを登録する方法
注意
この方法はイケてないです。
きっと正しいやり方が他にあると思ってるんですけど、ちょっと見た感じでは見当たらなかったので、知ってる方がいたら教えてくれると嬉しいです。
問題になったパターン
今回問題になったのは、IRCNet-JPなどの文字コードがISO-2022-JPのネットワークでチャンネル名が日本語の場合。
ZNCではznc.confにjoinするチャンネル名の一覧が記載されますが、ここに日本語チャンネル名をそのまま書くと文字化けします。
ZNCはUTF-8でチャンネル名を解釈しているので、文字化けするのは当然ですが、ではどうやって日本語名のチャンネルにjoinするか、という問題が出てきます。
対応方法
以下のコマンドとモジュールを組み合わせて対応しました。
Enablechan
これはIRCクライアントからZNCに新たなチャンネルへjoinしてもらうためのコマンドです。
これを使うことで文字化けせずに正しく日本語名のチャンネルにjoinできます。
(もちろんIRCクライアント側での文字コードの設定が正しいことが前提です)
SaveConfig
SaveConfigは、IRCクライアント側での設定をznc.confに反映させるためのコマンドです。
Enablechanで目的のチャンネルにjoinしてSaveConfigすることで、znc.confに反映させよう、という目論みです。
が、この方法では上手くいきません。
なぜなら、SaveConfigがチャンネル情報をznc.confに反映させないからです。
chansaver
そこで、chansaverというモジュールを導入します。
これを使えばチャンネル情報がznc.confに反映されます。
まとめ
つまり、chansaver→Enablechan→SaveConfigでznc.confに目的のチャンネルを追加することができるのです。
もちろん、その結果として、znc.confには文字化けしたチャンネル名が記録されてしまいますが、この状態でZNCを再起動しても、問題なくそのチャンネルにjoinできます。
たとえばtiarraでは接続するサーバごとに文字コードを設定できたので、ZNCでも同様の設定ができればなあ、と思うのですがそれっぽいのが見当たらず……。
charsetモジュールが解決してくれそうな気がしましたが、試しに使ってみても上手く文字化けが解消されませんでした。使い方が悪いのかな……。