web-dev-qa-db-fra.com

Basculer le codage du terminal avec une commande

L’un des serveurs sur lequel j’ai assez souvent ssh utilise le codage western au lieu de utf-8 (et il n’ya aucun moyen de changer cela).

J'ai commencé à écrire un script bash pour me connecter à ce serveur. Je n'aurai donc pas à taper l'adresse complète à chaque fois, mais j'aimerais améliorer ce script pour qu'il modifie également correctement le codage de la fenêtre du terminal.

La modification que je dois effectuer peut être effectuée à l'aide de la souris en sélectionnant "Terminal" -> "Définir le codage des caractères ..." -> "Western (ISO-8859-1)". Existe-t-il une commande de terminal qui fasse la même chose pour la fenêtre/l’écran de terminal en cours?

à préciser:
Je ( ne suis pas intéressé par les moyens de changer les paramètres régionaux du système sur le site distant - ce système est administré par quelqu'un d'autre, et je n'ai aucune idée de ce qui pourrait dépendre du codage latin-1. Ce que je veux faire est de laisser cette fenêtre de terminal de mon côté changer l'encodage des caractères à celui mentionné ci-dessus, de la même manière que je peux le faire avec ma souris et les menus.

24
Tomas Aschan

Vous recherchez luit qui est conçu à cet effet:

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

Il va convertir la sortie de la commande ssh en UTF-8, vous n’aurez donc pas besoin de changer le codage du terminal.

17
törzsmókus

Commencez par modifier les paramètres régionaux actuels dans votre éditeur favori.

Sudo gedit /var/lib/locales/supported.d/local à quelque chose comme

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

Puis lancez Sudo dpkg-reconfigure locales

Puis définissez le terminal avec LANG=en_GB.ISO-8859-1

J'espère que ça marche

4
Jonathan

Gnome Terminal utilise gconf pour stocker les paramètres. Ceux-ci peuvent être manipulés avec gconftool Ainsi, vous pouvez utiliser:

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

J'ai testé cela le 12.04. Pour une raison quelconque, le menu ("Terminal"->"Set Character Encoding...") ne semble pas être mis à jour en temps réel, mais le codage de caractères réel est mis à jour correctement.

4
andrewsomething

Voici une autre solution que j'avais l'habitude de changer le profil (pour la couleur de fond) lors de la connexion à un serveur de production. Cela implique xdotool .

xdotool simulera les séquences de touches nécessaires pour sélectionner l'élément de menu souhaité. Essayez-le d'abord avec votre clavier, puis notez la séquence:

$ xdotool key alt+t Down c Down Return

Cela activera le premier encodage de caractères. Ajoutez plus de touches Down avant le Return pour en sélectionner une autre.

Remarque: pour ssh, vous pouvez également utiliser un fichier ~/.ssh/config pour configurer des alias sur vos serveurs.

2
nniico

Je ne sais pas comment le tester, mais avec Konsole sur Kubuntu, je peux effectuer les tâches suivantes:

1) Trouver une application enregistrée sur dbus

$ qdbus

J'utilise konsole donc un simple qdbus | grep kons me donne org.kde.konsole

2) Trouver les sessions en cours à Konsole

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

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

3) Trouver des méthodes utiles

$ 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) Vérifier le codage actuel

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

5) Définir le codage

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

6) Vérifier le codage actuel

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

Ubuntu aura un programme terminal similaire, mais vous devrez vous débrouiller avec le nom du service, le chemin, la méthode et les arguments corrects.

2
jippie

Sur xterm, modifiez le codage en utilisant séquences de contrôle . Par exemple, dans bash, vous obtenez le jeu de caractères UTF-8 en exécutant:

echo -n $'\e%G'

Le codage ISO 8859-1 est accessible en exécutant:

echo -n $'\e%@'
1
vsnprintf