Терминал и cp866

Ивыч

New member
Сообщения
24
#1
Здравствуйте!

Необходимо организовать telnet сессию с удаленным устройством, консоль которой работает на CP866. Я установил пакет xfonts-terminus-dos, отредактировал файл /usr/share/fonts/X11/misc/fonts.alias добавив туда псевдонимы (alias) к шрифтам, подключил шрифты выполнив:
Bash:
cd /usr/share/fonts/X11/misc/
mkfontdir
mkfontscale
xset fp rehash
Проверил, что шрифты установились командой:
xlsfonts | grep ibm

и видимость алиасов:
xlsfonts | grep vga

Затем установил локаль ru_RU.CP866, командами:
Bash:
sudo mkdir -p /usr/local/share/i18n/
sudo bash -c 'echo -ne "\nru_RU.CP866 IBM866\n" >> /usr/local/share/i18n/SUPPORTED'
sudo dpkg-reconfigure locales
Вывод locale -a:
Bash:
iva@astrapc:~$ locale -a
C
C.UTF-8
POSIX
ru_RU.cp866
ru_RU.utf8
russian
Организую telnet соединение:
/usr/bin/xterm -en cp866 -bg black -cr black -fg SkyBlue -font vga -mesg -k8 +u8 -j +hold -xrm *oldXtermFKeys:true -title "Telnet 226" -e telnet 192.168.0.226

и собственно проблема заключается в том, что вывод кириллицы вижу, а вот ввод кракозябрами, как на скриншоте:
Screenshot_1.jpg

Если в строку, перед /usr/bin/xterm добавить LANG=ru_RU.cp866, выводится сообщение:
Warning: locale not supported by Xlib, locale set to C
и при попытке печати на русском символы не вводятся.

Подскажите как быть? Спасибо.
 
Последнее редактирование:

Mischutka

New member
Сообщения
320
#2
Как вариант, попробовать добавить отсутствующую локаль с помощью команды localedef.

Попробуйте так: sudo localedef -i ru_RU -f IBM866 ru_RU.IBM866
или так: sudo localedef -i ru_RU -f cp866 ru_RU.cp866

Скорее второй вариант.
 
Последнее редактирование:

Ивыч

New member
Сообщения
24
#3
Она же не отсутствует исходя из представленного мной вывода "locale -a" в посте выше. Я конечно попробовал, но результата не дало.
 

Mischutka

New member
Сообщения
320
#4
Она же не отсутствует исходя из представленного мной вывода "locale -a" в посте выше. Я конечно попробовал, но результата не дало.
По telnet нашёл следующее: Если возникают проблемы с вводом русских символов, надо создать файл ~/.telnetrc со следующей строкой:
DEFAULT set outbinary
 

Mischutka

New member
Сообщения
320
#6
А что, если попробовать перезагрузить систему и снова запустить telnet?
 

Ивыч

New member
Сообщения
24
#16
Выполнил, перезагрузился. Все по прежнему.
Я даже luit обновлял:
Bash:
iva@astrapc:~$ luit -V
luit - 2.0-20220111
 
Последнее редактирование:

Ивыч

New member
Сообщения
24
#18
Смущает, что в каталоге /usr/share/X11/locale нет каталога локали:
изображение_2022-03-31_141129.png
 

Ивыч

New member
Сообщения
24
#19
Получилось такой командой:
xterm -e luit -encoding "CP866" telnet 192.168.0.226

и ввод/вывод в CP866.
 

oko

New member
Сообщения
1 257
#20
to Ивыч
Xterm для преобразования кодировок (опция -en) использует вызов luit. И, если верить некоему hatta с opennet за 2004 г., в luit кодировки прибиты гвоздями. Находил подтверждение этому в багтрекере Mozilla за 2011 г., а также в stackoverflow-записях примерно тех лет. И, модуль экстрасенсорики подсказывает, что с тех пор ничего не изменилось, потому что CP866 (IBM866) уж больно редкая кодировка...
Если есть желание, можете попробовать пересобрать luit, добавив туда кодировку как в указанном выше StackOverflow-посте...

UPD Опередили :)
Значит, в текущей версии в Astra luit все-таки обновленный и поддерживает нужную кодировку. Это радует...