【发布时间】:2018-11-29 14:32:07
【问题描述】:
我目前正在使用管道输入/输出流原理通过 JSCH 读取和写入 shell 通道。
问题:当我将 shell 的响应传输到 jQuery 终端时,我的 jQuery 终端中出现了奇怪的字符。
我尝试以不同的方式读取管道输入流来解决问题:
尝试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 输出控制台中打印相同的字符串时,它可以工作。
更新 2: 我已经导入了 unix_formatting.js 文件,它几乎是固定的。这个文件的问题是它对 unix 转义码的支持有限。 js链接:https://unpkg.com/jquery.terminal@1.23.2/js/unix_formatting.js
如何在 jQuery 终端中解决这个问题?
【问题讨论】:
-
由于 jQuery Terminal 支持有限数量的 ANSI 转义码,你可以只包含 unix_formatting.js 文件。
-
@MartinPrikryl 您可以重新打开,因为问题出在前端,而重复的是与 html 无关的 UI 文本字段。
-
我关闭了这个问题,因为可能的重复线程将我带到了 jQuery 的终端 unix_formatting.js。我导入了文件,它有点固定。但它并没有完全修复,因为 unix_formatting.js 支持有限数量的 ANSI 转义码。
-
使用 unix_formatting 你只能有静态输出,如果你想要真正的 tty 你可以试试 xterm.js 看看我的回答。
标签: java jsch jquery-terminal