GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menentukan Pengkodean Karakter yang Digunakan Terminal Dalam Program C/c++?

Saya perhatikan bahwa SyncTERM menggunakan pengkodean karakter yang berbeda dari emulator terminal MacOS default, dan mereka tidak kompatibel satu sama lain. Misalnya, Anda ingin mencetak karakter blok dalam format string. Di SyncTERM, yang menggunakan pengkodean karakter IBM Extended ASCII, Anda akan menggunakan urutan escape oktal seperti 261 . Di Terminal.app (dan mungkin iTerm2 juga), ini hanya mencetak tanda tanya. Karena terminal ini menggunakan UTF-8, Anda perlu menggunakan uxxxx urutan pelarian.

Jadi katakanlah Anda ingin mencetak karakter tertentu, bukan ASCII, dalam format string, dan Anda ingin itu berfungsi di semua emulator terminal, apa pun rangkaian karakternya. Saya kira Anda akan menggunakan entri di database terminfo, tapi saya tidak begitu akrab dengan terminfo. Saya butuh beberapa petunjuk di sini.

Jawaban yang Diterima:

Singkat:

  • terminfo tidak akan membawa Anda ke sana, tidak akan membantu
  • tidak ada cara yang dapat diandalkan untuk menentukan pengkodean apa yang sebenarnya digunakan terminal
  • mulai dari literal Unicode adalah cara yang harus dilakukan, asalkan Anda tahu pengkodean apa yang ingin digunakan di terminal
  • pengguna harus mengetahui lokal apa yang sesuai dan pengkodean apa yang dapat dilakukan terminal
  • standar C memiliki fungsi untuk mengonversi karakter "lebar" yang akan tersedia di platform mirip Unix (lihat misalnya setlocale , wcrtomb dan wcsrtombs )

Linux
  1. Kustomisasi Terminal di Ubuntu 20.04 - bagaimana melakukannya?

  2. Bagaimana Menemukan Id Proses (pid) Dari Program Terminal yang Berjalan?

  3. Bagaimana aplikasi C/C++ saya menentukan apakah pengguna root menjalankan perintah?

  1. Bagaimana cara menemukan path lengkap program C++ Linux dari dalam?

  2. Bagaimana cara mendapatkan nama pengguna di C/C++ di Linux?

  3. Bagaimana cara memeriksa HZ di terminal?

  1. Cara mengubah warna terminal Linux Anda

  2. Bagaimana cara menyalin output terminal?

  3. Cara menentukan jumlah minggu dalam sebulan