Telnetにすこしふれる
kompiroさんのコード(http://d.hatena.ne.jp/kompiro/20071029/)を、
WindowsのTelnetサーバに向けてやってみた。
そして、ログイン後でいきなり文字化けしたorz
解析すると、カーソルとか画面を制御するようなエスケープシーケンスが
一緒に返ってきているのが原因っぽい。
*===============================================================
Welcome to Microsoft Telnet Server.
*===============================================================
- プログラムから実行した場合(エスケープはESC&スペースは見づらいので削除)
というわけで、これのISO/IEC 6429っぽいのが返ってきてる。
ESC[1;1H*===============================================================
ESC[2;1HWelcome to Microsoft Telnet Server.
ESC[3;1H*===============================================================ESC[4;1H
で、Telnetのターミナルタイプとやらを"dumb"とか"VT320"に指定すると
エスケープシーケンスが返ってこないようになったけど、
この設定っていいのかなー?
final TelnetClient client = new TelnetClient("dumb");
ターミナルタイプと文字コードを変えたら、
いちおー普通に表示されるようにはなりました。
でも、cygwinのvimとかをたたくとエスケープシーケンスですごいことになるので、
このあたりを実現するには、やっぱりちゃんと実装しないとダメってことなんですかね?
意外に奥が深い>Telnet