我用ssh2.jar连接到Linux上发命令,并读取返回的字符串:            /* 开启Session(会话) */
            _session = _connection.openSession();            int x_width = 90;
            int y_width = 30;
            /* 请求虚拟终端(伪终端) */
            _session.requestPTY("dumb", x_width, y_width, 0, 0, null);
            _session.startShell();
            
            /* 初始化输入流,输出流 */
            _inputStreamReceiver = _session.getStdout();
            _outputStreamSender = _session.getStdin();以前读取数据都没什么问题的,Linux的命令提示符颜色都是白色:
[root@DEVICE 19:29:26 ~]#现在Linux的命令提示符是彩色的了:
[root@DEVICE 19:29:26 ~]#结果通过输入流得到的信息是乱码:
[root@T300018663 19:29:26 ~]#有没有什么办法使终端提示符没有颜色啊?

解决方案 »

  1.   

    在 Linux 设置颜色需要使用 \e[1;32m 这样的格式,而 \e 就是 ASCII 码 27 的字符,也就是“ESC”,这个字符编码是就是 0x1B,所以你在 Windows 中读到 0x1B 这个乱码。
      

  2.   

    或者使用正则表达式替换一下:public class Test {    public static void main(String[] args) {
            String str = "[root@T300018663 19:29:26 ~]#";
            str = str.replaceAll("\\x1b\\[[0-9]+(?:;[0-9]+){0,2}m", "");
            System.out.println(str);
        }
    }