2

Я получаю доступ к удаленному компьютеру с помощью ssh и запускаю команду bash для ввода символов с использованием стандартного потока ввода:

чтение теста; эхо $ тест

Можно вводить английские буквы и использовать клавишу Backspace для их удаления, затем вводить другие символы и повторять эти шаги любое количество раз. Но это становится катастрофой, когда я использую другие символы utf-8, такие как русские, которые требуют 2 байта вместо 1, как английские. Например, я ввожу:

абвгдежз

После этого я использую backspace 8 раз и вводю другие символы:

привет

И нажмите клавишу ввода. Но вместо результата, который будет равен моему последнему вводу, я получаю следующее:

абвгпривет

Это означает, что 8 Backspace удаляет только 4 символа.

Я использую Linux Ubuntu 12.04. Пробовал разные приставки: стандартная, терминатор; различные типы опций возврата (как ASCII-del или Ctrl+H); установка $ LC_TYPE в ru_RU.UTF-8, но ничего не работает. Нет такой проблемы с использованием локальной консоли. Заранее спасибо.

Обновление: у меня также есть видео этой проблемы, пожалуйста, смотрите его на YouTube

2 ответа2

2

Вам нужно установить LC_CTYPE в локаль UTF-8, например ru_RU.UTF-8 или en_US.UTF-8 . Вы можете перечислить доступные локали, используя locale -a .

2

Вы можете обойти это, запустив

stty iutf8

на сервере каждый раз, когда вы там ssh. К сожалению, эта ошибка существует с 2005 года, смотрите подробности на форумах Debian . Вы также можете добавить эту строку в конец вашего файла .bashrc.

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