PoderosaをGB18030に対応させた

このところ、ずっとUbuntuのみで生活してたのですが、Windowsとのデュアルブートに変えました。で、久々にWindowsからターミナルエミュレータとか起動するのですが、そこでやはり直面するのは中国文字コードであるGB18030に対応したものがない問題。僕はずっとPoderosaを使っていましたが、これも当然GB18030なんて対応していない。
でも、エンジニアならここは何とかしなくちゃと思ったので、Poderosaオープンソースであることもあり、またPoderosa 非公式パッチというページで、Visual C# 2008 Express Editionでコンパイルできるって書いてあったのに勇気付けられて、早速Visual C# 2008 Express Editionをインストールした上でソースコードを読んでみました。
C#って読むの初めてだったけど、結構読みやすくて、文字コード変換自体はWindows(というか.NETフレームワーク)に任せればいい感じだったのですが、Poderosaは1文字が最大3バイトであるとしてしまっているところ(GB18030は最大4バイト)、そして1バイト目だけで文字が何バイトであらわされているかを判断してしまっているところ(GB18030は2バイト目まで見ないと、2バイトか4バイトかの区別ができない)があったので、そこは直したところ、おおよそGB18030に対応できました。
おおよそ、と書いたのは文字化けが発生する場合があるためで、catで表示したときは問題ないのに、lessとかvi、emacsだと化ける場合があって、化けるのは1バイト目が0x81〜0x9Fまでの場合で、どうもエスケープシーケンスとご認識されている模様。実はこれ、Linuxのターミナルでも化けてたので、なんというかGB18030文字コードの仕様が微妙ってことなのかもしれないけど、何とか直したいところ。そこはまだ直せていません。エスケープシーケンスの仕様とかぜんぜん知らないので、も少しちゃんとその辺を勉強しなくちゃいけなそうです。
とりあえず、大体使えるようになったので、使い始めています。これと、NTEmacsがあれば、何とか開発もできそう。でもやっぱり、開発はLinux上のほうがやりやすいですけど...
ちなみに、興味ある人と甲斐ないと思うんですけど、以下において置きました。ソースコードと実行用ファイルが入っています。
http://www.takaaki.info/data/poderosa_gb18030.zip