Как мне подключиться от клиента utf-8 к серверу latin1 через ssh?
У меня новая версия Ubuntu, и я хочу подключиться через ssh в gnome-терминал. Сервер использует latin1 (все файлы и т. Д. Являются latin1), поэтому я хочу использовать это в сеансе. Я изменил кодировку в опции меню, чтобы символы правильно выводились на мой экран, но я не могу правильно вводить не-ascii. Должен ли я передать некоторые магические аргументы в ssh или в gnome-терминал есть настройка, или я должен использовать stty? Я немного растерялся.
Обновить:
ХОРОШО. Теперь я немного сузил проблему. Если я запускаю следующее в командной строке:
php -r 'while ($c = fread(STDIN, 1)) { echo $c; }'
И нажмите не-ASCII ключ, он правильно эхом. Однако, если я наберу тот же ключ в оболочке, ничего не произойдет. Так что это должна быть какая-то настройка в среде оболочки (настройка локали?). Есть идеи?
2 ответа
Скорее всего, проблема связана с 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
для получения дополнительной информации об этих и других переменных.
Вы можете изменить кодировку в Terminal->Encoding в меню в gnome-терминал. Добавьте кодировку Western (ISO 8859-1) и переключитесь на нее.