从Java中的外部进程读取时出现乱码文本

时间:2012-05-24 17:42:27

标签: java ls processbuilder

我正在使用Java中的ProcessBuilder类启动与Cygwin捆绑的SSH实用程序。一切正常。我通过SSH连接到Linux服务器,可以运行命令并读取输出。

但是,无论何时返回输出,它只会在登录服务器并运行命令后发生,例如目录列表ls,返回如下内容:

InputStream: root@myserver:/scripts/common# ls 
InputStream: [00m[00mA1-4.yaml[00m                            [01;32mscip-1.2.0.linux.x86_64.gnu.opt.qso[00m
InputStream: [00madditional_files.txt[00m                 [01;32mscip-1.2.0.linux.x86_64.gnu.opt.spx[00m

据我所知,它只发生在文件列表命令中。例如,当我运行其他命令(如时间等)时,它会显示正常输出。

您能否建议将这些随机字符附加到文件名是什么?

我甚至尝试过使用UTF8编码,但没有任何改变。当我使用命令行直接登录时,我看不到那些结果。但是,cmdline以彩色值显示文件名。是否添加了一些非ASCII的附加信息?

1 个答案:

答案 0 :(得分:1)

使用命令ls --color=none解决了这个问题。

这是因为默认情况下ls命令返回附加了不同颜色代码值的文件名。 This link gives more information

下图描述了lsls --color=none

之间的区别

enter image description here