Risposte:
Il terminale utilizza le variabili di ambiente per determinare quale set di caratteri utilizzare, quindi puoi determinarlo osservando quelle variabili:
echo $LC_CTYPE
o
echo $LANG
locale
programma (come visto in altre risposte qui).
locale
variabili d'ambiente per determinarne la codifica. Il terminale può comunque far conoscere la sua codifica alle applicazioni che lo interagiscono impostando le locale
variabili d'ambiente. Per esempio, su MacOS è possibile scegliere la codifica del terminale e, facoltativamente, impostare le locale
variabili di ambiente all'avvio del terminale in Terminal
> Preferences
> Profiles
> Advanced
.
locale
Il comando senza argomenti stamperà i valori di tutte le variabili d'ambiente rilevanti eccetto LANGUAGE.
Per la codifica corrente:
locale charmap
Per le località disponibili:
locale -a
Per le codifiche disponibili:
locale -m
Se hai Python:
python -c "import sys; print(sys.stdout.encoding)"
Per quanto ne so, no.
Indicazioni circostanziali da $LC_CTYPE
, locale
e tali potrebbero sembrare allettanti, ma queste sono completamente separate dalla codifica che l'applicazione terminale (in realtà un emulatore) sta usando quando mostra i caratteri sullo schermo.
L'unico modo per rilevare la codifica con certezza è di produrre qualcosa presente solo nella codifica, ad esempio ä
, fare uno screenshot, analizzare quell'immagine e controllare se il carattere di output è corretto.
Quindi no, non è possibile, purtroppo.
Per vedere le informazioni sulla locale corrente, utilizzare il locale
comando. Di seguito è riportato un esempio su 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=