Telnetにすこしふれる

kompiroさんのコード(http://d.hatena.ne.jp/kompiro/20071029/)を、
WindowsTelnetサーバに向けてやってみた。
そして、ログイン後でいきなり文字化けしたorz


解析すると、カーソルとか画面を制御するようなエスケープシーケンスが
一緒に返ってきているのが原因っぽい。

  • DOS窓からTelnetサーバにアクセスした際に表示される文字


*===============================================================
Welcome to Microsoft Telnet Server.
*===============================================================

  • プログラムから実行した場合(エスケープはESC&スペースは見づらいので削除)


ESC[1;1H*===============================================================
ESC[2;1HWelcome to Microsoft Telnet Server.
ESC[3;1H*===============================================================ESC[4;1H
というわけで、これのISO/IEC 6429っぽいのが返ってきてる。



で、Telnetのターミナルタイプとやらを"dumb"とか"VT320"に指定すると
エスケープシーケンスが返ってこないようになったけど、
この設定っていいのかなー?


final TelnetClient client = new TelnetClient("dumb");


ターミナルタイプと文字コードを変えたら、
いちおー普通に表示されるようにはなりました。


でも、cygwinvimとかをたたくとエスケープシーケンスですごいことになるので、
このあたりを実現するには、やっぱりちゃんと実装しないとダメってことなんですかね?
意外に奥が深い>Telnet