jQuery终端-以Java字符串形式读取Shell响应显示jQuery终端中的奇怪字符

时间:2018-11-29 14:32:08

标签: java jsch jquery-terminal

我目前正在使用管道输入/输出流principe来使用JSCH读取和写入Shell通道。

问题:当我将外壳的响应传输到jQuery终端时,我在jQuery终端中出现了奇怪的字符。

奇怪的字符(jQuery终端): enter image description here

我尝试以不同的方式读取管道输入流以解决问题:

尝试1:

private synchronized String readResponse() throws IOException {
    byte[] array = new byte[pin.available()];
    pin.read(array);
    return new String(array, Charset.forName("UTF-8"));
}

尝试2:

private synchronized String readResponse() throws IOException {
        final StringBuilder s = new StringBuilder();
        while(pin.available() > 0) {
            s.append((char) pin.read());
        }
        return s.toString();
    }

遗憾的是,此问题仍然存在。谁能帮我吗?

更新: 我刚刚发现,当我在Java输出控制台中打印相同的字符串时,它就可以工作。

Java的System.out: enter image description here

更新2: 我已经导入了unix_formatting.js文件,它几乎是固定的。该文件的作用是它对Unix转义码的支持有限。链接到js:https://unpkg.com/jquery.terminal@1.23.2/js/unix_formatting.js

当前看起来像这样: enter image description here

如何在jQuery终端中解决此问题?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是,默认情况下,jQuery Terminal不支持ANSI转义码,但是您可以通过包含unix_formatting.js文件来启用基本支持,该文件是使用UMD创建的,因此可以将其导入并放入其中Webpack或汇总包,或使用脚本标签将其包括在内:

最简单的是使用unpkg.com:

<script src="https://unpkg.com/jquery.terminal/js/unix_formatting.js"></script>

您还可以使用与主文件(jsDeliver或cdnJS)相同的CDN

我认为cdn.rawgit.com可以一直使用到2019年10月,因此最好不要使用它。

但是,jQuery Terminal无法做到的一件事是,您将永远无法在浏览器的Terminal中显示交互式shell命令。创建该库是为了使用JavaScript编写您自己的命令,并基本支持unix_formatting文件中的shell命令。

如果要在浏览器中具有完整的Unix终端,最好的选择是xterm.js,它是真正的tty。如果可以运行服务器(如果正在运行Java,则可能可以),那么xterm.js会更好。您甚至可以运行viemacs -nw