2

У меня новая версия Ubuntu, и я хочу подключиться через ssh в gnome-терминал. Сервер использует latin1 (все файлы и т.д. являются latin1), поэтому я хочу использовать это в сеансе. Я изменил кодировку в опции меню, чтобы символы правильно выводились на мой экран, но я не могу правильно ввести не-ascii. Должен ли я передать некоторые магические аргументы в ssh или в gnome-терминал есть настройка, или я должен использовать stty? Я немного растерялся.

Обновить:

ХОРОШО. Теперь я немного сузил проблему. Если я запускаю следующее в командной строке:

php -r 'while ($c = fread(STDIN, 1)) { echo $c; }'

И нажмите не-ASCII ключ, он правильно эхом. Однако, если я наберу тот же ключ в оболочке, ничего не произойдет. Так что это должна быть какая-то настройка в среде оболочки (настройка локали?). Есть идеи?

2 ответа2

3

Скорее всего, проблема связана с readline, который использует bash. Поместите следующее в /etc/inputrc или ~/.inputrc:

set meta-flag on
set output-meta on
set convert-meta off

meta-flag включает восьмибитный ввод (то есть он не очищает восьмой бит в символах, которые он читает), независимо от того, что терминал утверждает, что он может поддерживать. output-meta включит отображение символов с восьмым битом, установленным напрямую, а не как мета-префиксная escape-последовательность. Когда convert-meta включена, readline преобразует символы с восьмым битом, установленным в последовательность клавиш ASCII, удаляя восьмой бит и добавляя к нему префикс с помощью escape-символа (по сути, используя escape в качестве мета-префикса). Мы выключаем это. Сделайте man readline для получения дополнительной информации об этих и других переменных.

2

Вы можете изменить кодировку в Terminal-> Encoding в меню в gnome-терминал. Добавьте западную (ISO 8859-1) кодировку, затем переключитесь на нее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .