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:
echo $LC_CTYPE
ou
echo $LANG
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 les locale
variables d'environnement. Par exemple, sur macOS , vous pouvez choisir l'encodage terminal et la possibilité de définir les locale
variables d'environnement au démarrage terminal Terminal
> 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:
locale charmap
Pour les paramètres régionaux disponibles:
locale -a
Pour les encodages disponibles:
locale -m
Si vous avez Python:
python -c "import sys; print(sys.stdout.encoding)"
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.
Pour voir les informations locales actuelles, utilisez la locale
commande. Ci-dessous un exemple sur RHEL 7.8
[usr@host ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=