Comment obtenir le codage des caractères du terminal
116
Maintenant, je change le codage des caractères de mon gnome-terminal en "GBK" (par défaut c'est UTF-8), mais comment puis-je obtenir la valeur (codage des caractères) dans mon Linux?
Ces variables d'environnement sont utilisées par les applications qui utilisent le terminal pour les E / S. L'émulateur de terminal lui-même n'en a aucune connaissance, et son encodage de caractères actuellement efficace est un paramètre quelque part dans le programme d'émulateur (un membre de données dans une classe libvte dans le cas du terminal GNOME).
JdeBP
1
l'ordre des variables suggéré ici n'est pas bon. une solution plus complète serait quelque chose comme: echo $ {LC_ALL: - $ {LC_CTYPE: - $ {LANG}}}. là encore, la variable définie n'est pas une garantie de validité, vous devez donc vous en tenir au localeprogramme (comme vu dans d'autres réponses ici).
Mike Frysinger
Comme l'a dit @JdeBP, le terminal n'utilise pas les localevariables d'environnement pour déterminer son codage. Le terminal peut cependant faire connaître son encodage aux applications qui interagissent avec lui en définissant les localevariables d'environnement. Par exemple, sur macOS , vous pouvez choisir l'encodage terminal et la possibilité de définir les localevariables d'environnement au démarrage terminal Terminal> Preferences> Profiles> Advanced.
Maggyero
97
locale La commande sans argument affichera les valeurs de toutes les variables d'environnement pertinentes à l'exception de LANGUAGE.
C'est ce qui a fonctionné pour moi sur un système CentOS. Il a montré l'encodage du système basé sur les paramètres de langue actuels. Les paramètres du terminal utilisés pour accéder à cette machine sont une histoire différente et une fonction du client utilisé.
De toutes les offres ci-dessus, la seule suggestion qui a fonctionné sur ma boîte Slackware64 v. 14.2 était cet extrait de python. Merci!
Thomas Altfather Good
6
A ma connaissance, non.
Des indications circonstancielles de $LC_CTYPE, localeet telles peuvent sembler séduisantes, mais elles sont complètement séparées du codage que l'application terminal (en fait un émulateur) utilise lors de l'affichage des caractères à l'écran.
Le seul moyen de détecter le codage avec certitude est de sortir quelque chose uniquement présent dans le codage, par exemple ä, prendre une capture d'écran, analyser cette image et vérifier si le caractère de sortie est correct.
Réponses:
Le terminal utilise des variables d'environnement pour déterminer le jeu de caractères à utiliser, vous pouvez donc le déterminer en regardant ces variables:
ou
la source
locale
programme (comme vu dans d'autres réponses ici).locale
variables d'environnement pour déterminer son codage. Le terminal peut cependant faire connaître son encodage aux applications qui interagissent avec lui en définissant leslocale
variables d'environnement. Par exemple, sur macOS , vous pouvez choisir l'encodage terminal et la possibilité de définir leslocale
variables d'environnement au démarrage terminalTerminal
>Preferences
>Profiles
>Advanced
.locale
La commande sans argument affichera les valeurs de toutes les variables d'environnement pertinentes à l'exception de LANGUAGE.Pour l'encodage actuel:
Pour les paramètres régionaux disponibles:
Pour les encodages disponibles:
la source
Vérifiez le codage et la langue:
Obtenez toutes les langues:
Remplacez pt_PT.utf8:
la source
Si vous avez Python:
la source
A ma connaissance, non.
Des indications circonstancielles de
$LC_CTYPE
,locale
et telles peuvent sembler séduisantes, mais elles sont complètement séparées du codage que l'application terminal (en fait un émulateur) utilise lors de l'affichage des caractères à l'écran.Le seul moyen de détecter le codage avec certitude est de sortir quelque chose uniquement présent dans le codage, par exemple
ä
, prendre une capture d'écran, analyser cette image et vérifier si le caractère de sortie est correct.Donc non, ce n'est malheureusement pas possible.
la source
Pour voir les informations locales actuelles, utilisez la
locale
commande. Ci-dessous un exemple sur RHEL 7.8la source