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
localeprograma bağlı kalmalısınız (buradaki diğer cevaplarda görüldüğü gibi).
localeda kodlama belirlemek için ortam değişkenleri. Ancak uçbirim, localeortam 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ış localeterminal 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, localeve 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 localecommand 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=