Altera a codificação do terminal com um comando

23

Um dos servidores que eu usei com frequência ssh usa codificação ocidental em vez de utf-8 (e não há como alterar isso).

Eu comecei a escrever um script bash para me conectar a este servidor, então não precisarei digitar o endereço inteiro toda vez, mas eu gostaria de melhorar este script para que ele também mude a codificação da janela do terminal. corretamente.

A alteração que preciso fazer pode ser realizada usando o mouse navegando até "Terminal" - > "Definir codificação de caracteres ..." - > "Ocidental (ISO-8859-1)". Existe um comando de terminal que faz a mesma coisa, para a janela / tela do terminal atual?

Para esclarecer:
Eu estou não interessado em maneiras de trocar a localidade do sistema no site remoto - esse sistema é administrado por outra pessoa, e eu não tenho idéia de qual coisa pode depender da codificação latin-1 lá . O que eu quero fazer é deixar esta janela de terminal do meu lado mudar a codificação de caracteres para o acima mencionado, da mesma forma que eu posso fazer com o meu mouse e os menus.

    
por Tomas Aschan 12.12.2011 / 19:40

6 respostas

17

Você está procurando por luit , que foi criado para essa finalidade:

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

Ele converterá a saída do comando ssh para UTF-8, para que você não precise alterar a codificação do terminal.

    
por törzsmókus 07.05.2012 / 15:41
4

Primeiro edite as localidades atuais no seu editor favorito

sudo gedit /var/lib/locales/supported.d/local para algo como

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

Em seguida, execute sudo dpkg-reconfigure locales

Em seguida, defina o terminal com LANG=en_GB.ISO-8859-1

Espero que funcione

    
por Jonathan 08.04.2012 / 18:50
4

O Gnome Terminal usa o gconf para armazenar as configurações. Estes podem ser manipulados com gconftool Então, você pode usar:

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

Eu testei isso em 12.04. Por algum motivo, o menu ( "Terminal"->"Set Character Encoding..." ) parece não ser atualizado em tempo real, mas a codificação de caracteres real é atualizada corretamente.

    
por andrewsomething 08.04.2012 / 19:07
2

Eu não sei como testá-lo, mas com o Konsole no Kubuntu eu posso fazer o seguinte:

1) Encontrar aplicativo registrado no dbus

$ qdbus

Eu uso konsole , então um simples qdbus | grep kons me dá org.kde.konsole

2) Encontre as sessões atuais no Konsole

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

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

3) Encontre métodos úteis

$ 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) Verifique a codificação atual

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

5) Definir codificação

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

6) Verifique a codificação atual

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

O Ubuntu terá um programa de terminal semelhante, mas você terá que se intriguar com nome de serviço, caminho, método e argumentos corretos.

    
por jippie 15.04.2012 / 13:21
1

Aqui está outra solução que usei para alterar o perfil (para cor de plano de fundo) ao se conectar a um servidor de produção. Envolve xdotool .

xdotool simulará as teclas necessárias para selecionar o item de menu desejado. Experimente primeiro com o teclado e anote a sequência:

$ xdotool key alt+t Down c Down Return

Ele ativará a codificação do primeiro caractere. Adicione mais Down keys antes do Return para selecionar outro.

Observação: para ssh , você também pode usar um arquivo ~/.ssh/config para configurar aliases em seus servidores.

    
por nniico 10.04.2012 / 12:06
1

Em xterm , altere a codificação usando sequências de controle . Por exemplo, dentro de bash você obtém o conjunto de caracteres UTF-8 executando:

echo -n $'\e%G'

A codificação ISO 8859-1 é acessível executando:

echo -n $'\e%@'
    
por vsnprintf 06.10.2015 / 00:00