Yanıtlar:
Terminal, hangi karakter setinin kullanılacağını belirlemek için ortam değişkenlerini kullanır, bu nedenle bu değişkenlere bakarak bunu belirleyebilirsiniz:
echo $LC_CTYPE
veya
echo $LANG
locale
programa bağlı kalmalısınız (buradaki diğer cevaplarda görüldüğü gibi).
locale
da kodlama belirlemek için ortam değişkenleri. Ancak uçbirim, locale
ortam değişkenlerini ayarlayarak kendisiyle etkileşim kuran uygulamaların kodlamasını bilmesini sağlayabilir. Örneğin, MacOS üzerinde terminal kodlamasını seçebilir ve isteğe bağlı olarak ayarlanmış locale
terminal başlangıçta ortam değişkenleri Terminal
> Preferences
> Profiles
> Advanced
.
locale
argümansız komut, LANGUAGE dışındaki tüm ilgili ortam değişkenlerinin değerlerini yazdıracaktır.
Mevcut kodlama için:
locale charmap
Mevcut yerel ayarlar için:
locale -a
Mevcut kodlamalar için:
locale -m
Python'unuz varsa:
python -c "import sys; print(sys.stdout.encoding)"
Bildiğim kadarıyla hayır.
Dan Duruma endikasyonlar $LC_CTYPE
, locale
ve bu kudreti çekici gibi, ama bunlar tamamen terminal uygulamasını kodlayan (aslında bir emülatör) ayrılan ekran üzerinde özellikler sergileyen zaman kullanarak olur edilir.
Kodlamayı kesin olarak tespit etmenin tek yolu, yalnızca kodlamada mevcut olan bir şeyi ä
çıkarmaktır , örneğin , bir ekran görüntüsü almak, bu görüntüyü analiz etmek ve çıktı karakterinin doğru olup olmadığını kontrol etmektir.
Yani hayır, ne yazık ki mümkün değil.
Mevcut yerel bilgileri görmek için locale
command komutunu kullanın. Aşağıda RHEL 7.8 ile ilgili bir örnek bulunmaktadır.
[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=