WeeChatで~(全角チルダ/波ダッシュ)を入力したい(iso-2022-jpなIRCサーバ環境)

私はWeeChatを使ってIRCを使っています。
このときに、「~」を入力するとLimeChat等の他のクライアントでは文字化けしてしまうという問題がありました。

どうにかこれを改善したいと思って試行錯誤した結果、改善できたのでメモしておきます。

環境

  • WeeChatを起動させているサーバ
    • CentOS7
      • WeeChat 1.4(但し0.x台の頃から変わらない事象です)
      • screen 4.01.00
    • Linuxの$LANGは、ja_JP.UTF-8
    • WeeChatで接続しているチャンネルの文字コードは、iso-2022-jp
    • /set charset.default.decode = “iso-2022-jp”
    • /set charset.default.encode = “iso-2022-jp”
  • WeeChatを表示させているクライアント
    • Windows7
    • cygwin
    • ssh接続でscreenを表示してその上のWeeChatを使用

クライアントからWeeChatとLimeChat(Windows上で動作するIRCクライアント)を操作し、同じサーバ、同じチャンネルにJOINします。

問題の事象

WeeChat上で「~」を入力すると、LimeChatから見ると文字化けします。
LimeChat上で「~」を入力しても、WeeChatでは文字化けしません。
ですが、2つの波ダッシュは、WeeChat上では別の文字(波の向きが違う)で表示されます。

  • WeeChatで入力した「~」:wavedash_wee
  • LimeChatで入力した「~」をWeeChatで表示:wavedash_lime

この事から、Windowsで使われる「~」がLinuxでは扱いが異なっているのではないかと想像できます。
これについては参考ページが以下の様にいくつかあります。

解決

要はWeeChatから入力する「~」をwavedash_weeからwavedash_limeに変換してやればいいわけです。
そのため、送信時にテキスト置換できるようなスクリプトがないかを調べたところ、「text_replace.py」というスクリプトがあったのでこれを使ってみました。

以下はWeeChat上での操作です。


/script install text_replace.py
/set plugins.var.python.text_replace.replacement_pairs "~=~"

plugins.var.python.text_replace.replacement_pairsには、=区切りで変換前と変換後のテキストを指定します。

“~=~”の部分は実際には以下の様に指定します。

  • 左側:普通にWeeChatに入力した「~」
  • 右側:LimeChatで入力した「~」をWeeChatで表示したwavedash_limeをコピーアンドペースト
  • こんな感じ:”wavedash_wee=wavedash_lime

これで、普通にWeeChatで入力したら文字化けする「~」を、LimeChatで見ても文字化けしない「~」に変換して送信することが出来るようになりました。