GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo determinar la codificación de caracteres que usa una terminal en un programa C/c++?

Me di cuenta de que SyncTERM usa una codificación de caracteres diferente a la del emulador de terminal predeterminado de MacOS, y son incompatibles entre sí. Por ejemplo, suponga que desea imprimir un carácter de bloque en una cadena de formato. En SyncTERM, que usa la codificación de caracteres IBM Extended ASCII, usaría una secuencia de escape octal como 261 . En Terminal.app (y probablemente también en iTerm2), esto solo imprime un signo de interrogación. Dado que estos terminales usan UTF-8, debe usar el uxxxx secuencia de escape.

Entonces, digamos que desea imprimir un cierto carácter, no ASCII, en una cadena de formato, y desea que funcione en todos los emuladores de terminal, independientemente del conjunto de caracteres. Supongo que usaría una entrada en la base de datos terminfo, pero no estoy muy familiarizado con terminfo. Necesito algunos consejos aquí.

Respuesta aceptada:

Corto:

  • terminfo no lo llevará allí, no lo ayudará
  • no existe una forma fiable de determinar qué codificación utiliza realmente un terminal
  • comenzar desde literales Unicode es el camino a seguir, siempre que sepa qué codificación quiere usar en la terminal
  • el usuario debe saber qué configuración regional es apropiada y qué codificación puede hacer el terminal
  • el estándar C tiene funciones para convertir caracteres "anchos" que tendrá disponibles en cualquier plataforma similar a Unix (ver por ejemplo setlocale , wcrtomb y wcsrtombs )

Linux
  1. Personalizar la Terminal en Ubuntu 20.04:¿cómo hacerlo?

  2. ¿Cómo encontrar el ID de proceso (pid) de un programa de terminal en ejecución?

  3. Cómo iniciar la terminal cPanel

  4. (C/C++) ¿Cómo generar un archivo ejecutable que pueda ejecutarse tanto en Windows como en Linux?

  5. ¿Cómo obtener el nombre de usuario en C/C++ en Linux?

Cómo cambiar el color de tu terminal Linux

Cómo compilar C, C++ y Java usando Terminal en Linux

Cómo buscar en la web desde la terminal en Linux

Cómo personalizar la terminal en Ubuntu 20.04

Cómo funciona el programa ping en Linux

¿Cómo debo determinar la utilización actual de la red?