терминал jQuery - чтение ответа оболочки в Java в виде строки, показывающей странные символы в терминале jQuery - PullRequest
0 голосов
/ 29 ноября 2018

В настоящее время я использую потоковый принцип ввода-вывода для чтения и записи в канал оболочки с использованием JSCH.

Проблема: я получаю странные символы в моем терминале 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, она работает.

System.out Java: enter image description here

Обновление 2: Я импортировал файл unix_formatting.js, и он почти исправлен.С этим файлом связано то, что он имеет ограниченную поддержку escape-кодов Unix.Ссылка на js: https://unpkg.com/jquery.terminal@1.23.2/js/unix_formatting.js

В настоящее время выглядит так: enter image description here

Как я могу исправить эту проблему в терминале jQuery?

1 Ответ

0 голосов
/ 29 ноября 2018

Проблема, с которой вы столкнулись, заключается в том, что по умолчанию jQuery Terminal не поддерживает управляющие коды ANSI, но вы можете включить базовую поддержку, включив файл unix_formatting.js, файл создан с использованием UMD, поэтому вы можете импортировать его и сохранить вПакет Webpack или Rollup или включите его с помощью тега script:

Simplest использует unpkg.com:

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

, вы также можете использовать тот же CDN, что и для основных файлов (jsDeliver или cdnJS)

Я думаю, что cdn.rawgit.com будет работать до октября 2019 года, поэтому лучше его не использовать.

Но единственное, чего не может сделать jQuery Terminal, это то, что вы никогда не сможетедля отображения интерактивной команды оболочки в терминале в браузере.Библиотека была создана для написания ваших собственных команд на JavaScript с базовой поддержкой команд оболочки в файле unix_formatting.

Если вы хотите иметь полный терминал unix в браузере, лучшим выбором будет xterm.js который является настоящим tty.Если вы можете запустить сервер, что возможно, если вы используете Java, тогда xterm.js будет намного лучше.Вы даже можете запустить vi или emacs -nw с ним.

...