Odpowiedzi:
Terminal używa zmiennych środowiskowych, aby określić, którego zestawu znaków użyć, dlatego możesz to określić, patrząc na te zmienne:
echo $LC_CTYPE
lub
echo $LANG
localeprogramu (jak widać w innych odpowiedziach tutaj).
localezmiennych środowiskowych do określenia swojego kodowania. Terminal może jednak pozwolić aplikacjom, które z nim współpracują, poznać jego kodowanie, ustawiając localezmienne środowiskowe. Na przykład, na MacOS można wybrać kodowanie terminala i ewentualnie ustawić localezmienne środowiskowe na zacisku starcie w Terminal> Preferences> Profiles> Advanced.
locale polecenie bez argumentów wypisze wartości wszystkich odpowiednich zmiennych środowiskowych z wyjątkiem LANGUAGE.
Aktualne kodowanie:
locale charmap
Dostępne lokalizacje:
locale -a
Dostępne kodowania:
locale -m
Jeśli masz Pythona:
python -c "import sys; print(sys.stdout.encoding)"
O ile wiem, nie.
Wskazania okolicznościowe z $LC_CTYPE, localei takie może wydawać się intrygujący, ale są one całkowicie oddzielone od kodującego aplikację terminala (właściwie emulatorze) dzieje się przy użyciu podczas wyświetlania znaków na ekranie.
Jedynym sposobem na pewne wykrycie kodowania jest wyprowadzenie czegoś, co jest tylko obecne w kodowaniu, np. äZrobienie zrzutu ekranu, przeanalizowanie tego obrazu i sprawdzenie, czy znak wyjściowy jest poprawny.
Więc nie, niestety nie jest to możliwe.
Aby zobaczyć aktualne informacje o lokalizacji użyj localepolecenia. Poniżej znajduje się przykład na 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=