Comment savoir si un terminal prend en charge UTF-8

21

J'installe le module CPAN pour perl sur CentOs 5, et l'une des questions est "Votre terminal prend-il en charge UTF-8?" (paraphrasé). Comment le savoir?

Qu'est ce que c'est
la source

Réponses:

15

Vraiment, le moyen infaillible de tester est de télécharger un fichier texte et de le cat dans le terminal et de voir si tout va bien.

ou, si vous le pouvez, recompilez le terminal en activant l'option unicode (en supposant qu'il en ait un).

à quoi ressemblent $ TERM et $ LANG?

theman_on_osx
la source
$ TERM est "xterm" $ LANG est "en_US.UTF-8" (aha!) Le fichier texte s'affiche bien dans le terminal, mais curieusement, pas dans Firefox.
Whatsit
oui, j'ai en fait rencontré la même chose: - / ... quand j'ai essayé la suggestion de therek, j'ai eu le point d'interrogation
theman_on_osx
$ LANG vous indique simplement ce que votre système utilisera lors de l'écriture sur stdout / stderr. Il ne dit rien sur les capacités du terminal. Cependant, si tout ce que votre système imprime de caractères étranges semble correct, votre terminal prend probablement en charge UTF-8.
Epcylon
3
Cela peut même être automatisé, en affichant du texte et en vérifiant sa largeur (en lisant la position du curseur avant et après). J'ai posté une preuve de concept à propos de quelque chose d'autre.
Gilles 'SO- arrête d'être méchant'
@Gilles, votre réponse est d'une simplicité éclatante. Aimer!
20

Tapez ceci dans votre terminal:

echo -e '\xe2\x82\xac' 

Si votre terminal prend en charge UTF-8, il affichera le signe euro:

user9474
la source
Toutes les polices n'ont pas le signe euro, donc un point de code de test différent peut être recommandé.
Michael Hampton
5

La manière la plus faible: exécutez la suite et vérifiez la sortie. Ce sera un O majuscule avec circonflexe si le terminal affiche UTF-8.

perl -le 'print "\x{c3}\x{94}"'

la source
Je suis presque sûr que mon terminal prend désormais en charge UTF-8 (a réussi le test suggéré par theman_on_osx), mais cela ne produit qu'une ligne vierge. Que se passe-t-il?
Whatsit
La police que vous utilisez dans votre application de terminal ne prend peut-être pas en charge les caractères UTF-8.
therek
4
Je sais que c'est extrêmement tard, mais le drapeau UTF-8 Out améliore le fonctionnementperl -CO -le 'print "\x{d4}"'
Ashley
3
Ou sans l'option -CO, donnez à Perl les octets UTF-8 corrects: $ perl -le 'print "\ x {c3} \ x {94}"' Ô
Tim
2

La façon la plus sûre de tirer est d'utiliser la commande «locale». Il imprimera toutes les variables diverses et diverses qui dictent le jeu de caractères à utiliser. Par exemple, ceci est ma sortie sur RHEL5.3, définie pour n'utiliser que UTF-8 par défaut.

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
Scott Pack
la source
1
Cela ne teste pas le terminal, seul le paramètre local (qui en pratique n'est pas toujours défini par l'émulateur de terminal, peut ne pas refléter l'état actuel du terminal, ou peut avoir été remplacé par une configuration utilisateur).
Gilles 'SO- arrête d'être méchant'
1

Vous pouvez simplement utiliser la commande suivante:

locale charmap
ss32
la source
1
Cela ne teste pas le terminal. Il affiche uniquement les paramètres régionaux.
grawity
1
curl http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

ou

wget -O - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

Cela nécessite évidemment wgetou curl.

Janus Troelsen
la source
-1
UTF=$(echo -e "\u263A")
if [[ ! "$UTF" =~ "A" ]]  ; then
 echo -n "UNICODE here!"
fi
computermite
la source
2
Cela ne teste pas le terminal. Il teste uniquement si la fonction echointégrée prend en charge \u.
grawity