使用JSch时为什么会看到scrabbled输出?

我正在尝试使用JSch 。 我试过这里的例子虽然我可以连接输出很奇怪。
我得到以下内容:

 Last login: Thu Jan 31 19:44:25 2013 from 10.2.251.77 [1mcli:~ # [m 

如果我这样做,我得到:

 [0m[01;34m.InstallAnywhere[0m [00m.bash_history [00m.bash_profile[0m [01;34mbin[0m [00msles11-patched[0m [01;34m.kbd[0m [00mindex.html[0m [00mtest.sql[0m [00m.viminfo[0m [00;31mipvsadm-1.26-1.src.rpm[0m [m[1mcli:~ # [m 

这些是目录内容,但为什么会这样显示?
我在Eclipse中运行这个,这是我在Eclipse输出中看到的。 如果我从Windows CMD运行它,它会卡住

更新:
我注意到如果我连接到不同的linux输出就好了!
只有当我连接到特定的Linux安装时,我才会看到这些奇怪的角色! 知道是什么导致了这个吗?

UPDATE2:
按照@PeterMmm的链接,我做了printf "äöü" | xxd printf "äöü" | xxd 。 “坏”和好的都给出了:
0000000: e4f6 fc
我也做过locale
在“坏”的情况下:

 # locale LANG=POSIX LC_CTYPE=en_US.UTF-8 LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= 

在良好的系统中:

 LANG=POSIX LC_CTYPE=en_US.UTF-8 LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= 

配置似乎是一样的。 那可能是什么导致了这个?

请检查Funny Shell Output:[01; 32mtestfile.txt [00m而不是testfile.txt

 ((ChannelShell) channel).setPtyType("dumb"); 

诀窍。

它们是终端仿真的转义序列。 我猜这与字符编码没有关系。

更新:如果调用ChannelShell#setPty(false),将不会分配伪终端并且不会出现转义序列。

 Channel channel=session.openChannel("shell"); ((ChannelShell)channel).setPty(false); // !! ... channel.connect();