Sekarang saya mengubah pengkodean karakter gnome-terminal saya menjadi "GBK" (defaultnya adalah UTF-8), tetapi bagaimana saya bisa mendapatkan nilai (pengkodean karakter) di Linux saya?
Terminal menggunakan variabel lingkungan untuk menentukan himpunan karakter mana yang akan digunakan, oleh karena itu Anda dapat menentukannya dengan melihat variabel tersebut:
Variabel lingkungan ini digunakan oleh aplikasi yang menggunakan terminal untuk I / O. Emulator terminal itu sendiri sama sekali tidak memiliki pengetahuan tentang mereka, dan pengkodean karakter yang efektif saat ini adalah pengaturan di suatu tempat dalam program emulator (anggota data di dalam kelas libvte dalam kasus Terminal GNOME).
JdeBP
1
urutan variabel yang disarankan di sini tidak baik. solusi yang lebih lengkap akan seperti ini: echo $ {LC_ALL: - $ {LC_CTYPE: - $ {LANG}}}. sekali lagi, variabel yang disetel bukan jaminan bahwa mereka valid, jadi Anda harus tetap menggunakan localeprogram (seperti yang terlihat pada jawaban lain di sini).
Mike Frysinger
Seperti yang dikatakan @JdeBP, terminal tidak menggunakan 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.
Maggyero
97
locale perintah tanpa argumen akan mencetak nilai dari semua variabel lingkungan yang relevan kecuali untuk LANGUAGE.
Inilah yang berhasil untuk saya pada sistem CentOS. Ini menunjukkan pengkodean sistem berdasarkan pengaturan bahasa saat ini. Pengaturan terminal yang digunakan untuk mencapai mesin itu adalah cerita yang berbeda dan fungsi dari klien yang digunakan.
Dari semua penawaran di atas, satu-satunya saran yang bekerja pada kotak Slackware64 v. 14.2 saya adalah potongan python ini. Terima kasih!
Thomas Altfather Good
6
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.
Jawaban:
Terminal menggunakan variabel lingkungan untuk menentukan himpunan karakter mana yang akan digunakan, oleh karena itu Anda dapat menentukannya dengan melihat variabel tersebut:
atau
sumber
locale
program (seperti yang terlihat pada jawaban lain di sini).locale
variabel lingkungan untuk menentukan pengkodeannya. Namun terminal dapat membiarkan aplikasi yang berinteraksi itu mengetahui pengkodeannya dengan mengaturlocale
variabel lingkungan. Misalnya, pada MacOS Anda dapat memilih pengkodean terminal dan opsional mengaturlocale
variabel lingkungan pada saat startup terminal diTerminal
>Preferences
>Profiles
>Advanced
.locale
perintah tanpa argumen akan mencetak nilai dari semua variabel lingkungan yang relevan kecuali untuk LANGUAGE.Untuk pengkodean saat ini:
Untuk lokal yang tersedia:
Untuk pengkodean yang tersedia:
sumber
Periksa encoding dan bahasa:
Dapatkan semua bahasa:
Ubah ke pt_PT.utf8:
sumber
Jika Anda memiliki Python:
sumber
Sepengetahuan saya, tidak.
Indikasi tidak langsung dari
$LC_CTYPE
,locale
dan 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.
sumber
Untuk melihat informasi lokal menggunakan
locale
perintah saat ini. Di bawah ini adalah contoh di RHEL 7.8sumber