Jawaban:
Terminal menggunakan variabel lingkungan untuk menentukan himpunan karakter mana yang akan digunakan, oleh karena itu Anda dapat menentukannya dengan melihat variabel tersebut:
echo $LC_CTYPE
atau
echo $LANG
localeprogram (seperti yang terlihat pada jawaban lain di sini).
localevariabel lingkungan untuk menentukan pengkodeannya. Namun terminal dapat membiarkan aplikasi yang berinteraksi itu mengetahui pengkodeannya dengan mengatur localevariabel lingkungan. Misalnya, pada MacOS Anda dapat memilih pengkodean terminal dan opsional mengatur localevariabel lingkungan pada saat startup terminal di Terminal> Preferences> Profiles> Advanced.
locale perintah tanpa argumen akan mencetak nilai dari semua variabel lingkungan yang relevan kecuali untuk LANGUAGE.
Untuk pengkodean saat ini:
locale charmap
Untuk lokal yang tersedia:
locale -a
Untuk pengkodean yang tersedia:
locale -m
Jika Anda memiliki Python:
python -c "import sys; print(sys.stdout.encoding)"
Sepengetahuan saya, tidak.
Indikasi tidak langsung dari $LC_CTYPE, localedan semacamnya mungkin tampak memikat, tetapi ini sepenuhnya terpisah dari pengkodean aplikasi terminal (sebenarnya emulator) yang kebetulan digunakan saat menampilkan karakter di layar.
Mereka satu-satunya cara untuk mendeteksi pengkodean dengan pasti adalah dengan mengeluarkan sesuatu yang hanya ada dalam pengkodean, misalnya ä, mengambil tangkapan layar, menganalisis gambar itu dan memeriksa apakah karakter keluaran sudah benar.
Jadi tidak, itu tidak mungkin, sayangnya.
Untuk melihat informasi lokal menggunakan localeperintah saat ini. Di bawah ini adalah contoh di 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=