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
localeprogramme (comme vu dans d'autres réponses ici).
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.
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, 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.
Donc non, ce n'est malheureusement pas possible.
Pour voir les informations locales actuelles, utilisez la localecommande. 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=