Shell/bash - Afficher dans le bon encodage

Fermé
gnu0 - Modifié par gnu0 le 17/12/2014 à 14:36
 gnu0 - 17 déc. 2014 à 17:34
Bonjour,

Je vais réaliser un script en bash qui sera lancé la plupart du temps sur un serveur par des utilisateurs connectés avec SSH (linux toutes distributions, windows avec putty, ...)

Quand je ferai afficher un message par mon script (avec éventuellement accents et caractères spéciaux), comment faire pour qu'il s'affiche correctement quel que soit l'encodage utilisé par l'utilisateur ? (la plupart du temps ils sont connectés soit en utf8, soit en iso88591, soit iso885915, soit en ANSI)



Merci d'avance.
A voir également:

1 réponse

Salut,

Peut-être un début de raponse là : http://www.tuteurs.ens.fr/faq/utf8.html#ssh

;-)
0
Salut,

Merci, je sais que je peux connaitre l'encodage utilisé par l'utilisateur grace à $LC_CTYPE ou $LANG, c'est ainsi que la plupart des exécutables savent dans quel encodage afficher du texte.

Je réalise justement un script exécutable, je sais donc dans quel encodage j'écris mon script, et quel encodage utilise l'utilisateur.

Ma question est plutôt : quelle est à votre avis la meilleure façon de faire (sachant tout cela) pour afficher du texte dans le bon jeu de caractère pour chaque utilisateur ? un iconv systématique ?
0
manuel > gnu0
17 déc. 2014 à 16:33
Ben d'après ce que j'ai compris dans le lien, le but serait de forcer l'encodage de l'utilisateur lorsqu'il se logue avec la variable $LC_CTYPE (à mettre dans le fichier de login (.bashrc par exemple)).

Ainsi tu définis toi-même l'encodage.

Regarde aussi dans le lien suivant et la commande luit.
0
En fait luit ne s'adapte pas a ma situation, car ce serait aux utilisateurs de lancer luit en connaissant à l'avance l'encodage de mon script (et cela peut créer des problèmes pour d'autres choses du coup)

Si je force $LC_CTYPE, cela ne va pas modifier l'encodage du terminal ou du putty du client, et du coup c'est tout le système qui va afficher n'importe quoi.
$LC_CTYPE est justement modifié par ssh pour le faire correspondre avec l'encodage utilisé par le client. Et le système utilise donc $LC_CTYPE pour savoir comment afficher ses messages.
Je souhaite faire la même chose avec mon script.
0