Переключите кодирование терминала с помощью команды

Один из серверов, на котором я довольно часто ssh использовал западную кодировку вместо utf-8 (и я никак не могу это изменить).

Я начал писать сценарий bash для подключения к этому серверу, поэтому мне не придется каждый раз набирать полный адрес, но я хотел бы улучшить этот сценарий, чтобы он также изменял кодировку окна терминала правильно.

Изменение, которое мне нужно сделать, можно выполнить с помощью мыши, перейдя в «Терминал» -> «Установить кодировку символов ...» -> «Западный (ISO-8859-1)». Есть ли команда терминала, которая делает то же самое для текущего окна / экрана терминала?

Чтобы уточнить:
Я , а не Я заинтересован в способах переключения локали системы на удаленном сайте - эта система управляется кем-то другим, и я понятия не имею, что может зависеть от кодировки latin-1. То, что я хочу сделать, - это позволить этому окну терминала на моей стороне переключить кодировку символов на вышеуказанную, точно так же, как я могу сделать это с помощью мыши и меню.

24
задан 14 December 2011 в 17:17

6 ответов

Вы ищете luit, который предназначен для этой цели:

$ luit -encoding ISO-8859-1 ssh remote.host

Он преобразует вывод команды ssh в UTF-8, поэтому вы не сможете нужно изменить кодировку терминала.

0
ответ дан 14 December 2011 в 17:17

Сначала отредактируйте текущие локали в вашем любимом редакторе

sudo gedit /var/lib/locales/supported.d/local, например,

en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_GB.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1

, затем выполните sudo dpkg-reconfigure locales

, затем установите терминал с помощью LANG=en_GB.ISO-8859-1.

Надеюсь, что работает

0
ответ дан 14 December 2011 в 17:17

Gnome Terminal использует gconf для сохранения настроек. Этим можно манипулировать с помощью gconftool. Итак, вы можете использовать:

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1

Я тестировал это 12.04. По какой-то причине меню ("Terminal"->"Set Character Encoding...") не обновляется в режиме реального времени, но фактическая кодировка символов корректно обновляется.

0
ответ дан 14 December 2011 в 17:17

Вот еще одно решение, которое я использовал для изменения профиля (для цвета фона) при подключении к производственному серверу. Он включает в себя xdotool .

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

$ xdotool key alt+t Down c Down Return

Это активирует первую кодировку символов. Добавьте еще Down клавиш перед Return, чтобы выбрать другие.

Примечание: для ssh вы также можете использовать файл ~/.ssh/config для настройки псевдонимов для ваших серверов.

0
ответ дан 14 December 2011 в 17:17

В xterm измените кодировку, используя управляющих последовательностей . Например, в bash вы получите набор символов UTF-8, выполнив:

echo -n  

Кодирование ISO 8859-1 доступно при запуске:

echo -n \e%@'
\e%G'

Кодирование ISO 8859-1 доступно при запуске:

echo -n \e%@'
0
ответ дан 14 December 2011 в 17:17

Я не знаю, как протестировать его, но с Konsole на Kubuntu я могу сделать следующее:

1) Найдите применение, зарегистрированное к dbus

$ qdbus

Я использую konsole так простое qdbus | grep kons дает мне org.kde.konsole

2) Найдите текущие сессии в Konsole

$ qdbus org.kde.konsole | grep Sessions
/Sessions
/Sessions/1

$ set | grep -i sessions
KONSOLE_DBUS_SESSION=/Sessions/1

3) Найдите полезные методы

$ qdbus org.kde.konsole /Sessions/1 | grep -i codec
method QByteArray org.kde.konsole.Session.codec()
method bool org.kde.konsole.Session.setCodec(QByteArray codec)

4) Проверьте текущее кодирование

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
UTF-8

5) Кодирование набора

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.setCodec ISO-8859-1
true

6) Проверьте текущее кодирование

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
ISO-8859-1

Ubuntu будет иметь подобную терминальную программу, но необходимо будет сделать некоторое приведение в замешательство сами с корректным servicename, путем, методом и аргументами.

3
ответ дан 14 December 2011 в 17:17

Другие вопросы по тегам:

Похожие вопросы: