Cómo obtener la codificación de caracteres de la terminal
116
Ahora cambio la codificación de caracteres de mi gnome-terminal a "GBK" (por defecto es UTF-8), pero ¿cómo puedo obtener el valor (codificación de caracteres) en mi Linux?
Estas variables de entorno son utilizadas por aplicaciones que utilizan el terminal para E / S. El emulador de terminal en sí mismo no tiene conocimiento alguno de ellos, y su codificación de caracteres actualmente efectiva es una configuración en algún lugar dentro del programa del emulador (un miembro de datos dentro de una clase libvte en el caso de GNOME Terminal).
JdeBP
el orden de las variables sugerido aquí no es bueno. una solución más completa sería algo como: echo $ {LC_ALL: - $ {LC_CTYPE: - $ {LANG}}}. por otra parte, la variable que se establece no es una garantía de que sean válidas, por lo que debe atenerse al localeprograma (como se ve en otras respuestas aquí).
Mike Frysinger
Como dijo @JdeBP, el terminal no usa las localevariables de entorno para determinar su codificación. Sin embargo, el terminal puede permitir que las aplicaciones que interactúan con él conozcan su codificación configurando las localevariables de entorno. Por ejemplo, en MacOS puede elegir la codificación terminal y opcionalmente configurar las localevariables de entorno en el arranque terminal en Terminal> Preferences> Profiles> Advanced.
Maggyero
97
locale El comando sin argumentos imprimirá los valores de todas las variables de entorno relevantes, excepto LANGUAGE.
Esto es lo que funcionó para mí en un sistema CentOS. Mostró la codificación del sistema según la configuración de idioma actual. La configuración de la terminal utilizada para llegar a esa máquina es una historia diferente y una función del cliente que se utiliza.
De todas las ofertas anteriores, la única sugerencia que funcionó en mi caja Slackware64 v. 14.2 fue este fragmento de python. ¡Gracias!
Thomas Altfather Good
6
Que yo sepa, no.
Las indicaciones circunstanciales de $LC_CTYPE, localey tal pueden parecer atractivas, pero están completamente separadas de la codificación que la aplicación de terminal (en realidad un emulador) está usando al mostrar caracteres en la pantalla.
La única forma de detectar la codificación con seguridad es generar algo que solo esté presente en la codificación, por ejemplo ä, tomar una captura de pantalla, analizar esa imagen y verificar si el carácter de salida es correcto.
Respuestas:
La terminal usa variables de entorno para determinar qué juego de caracteres usar, por lo tanto, puede determinarlo observando esas variables:
o
fuente
locale
programa (como se ve en otras respuestas aquí).locale
variables de entorno para determinar su codificación. Sin embargo, el terminal puede permitir que las aplicaciones que interactúan con él conozcan su codificación configurando laslocale
variables de entorno. Por ejemplo, en MacOS puede elegir la codificación terminal y opcionalmente configurar laslocale
variables de entorno en el arranque terminal enTerminal
>Preferences
>Profiles
>Advanced
.locale
El comando sin argumentos imprimirá los valores de todas las variables de entorno relevantes, excepto LANGUAGE.Para la codificación actual:
Para las configuraciones regionales disponibles:
Para codificaciones disponibles:
fuente
Verifique la codificación y el idioma:
Obtenga todos los idiomas:
Cambie a pt_PT.utf8:
fuente
Si tienes Python:
fuente
Que yo sepa, no.
Las indicaciones circunstanciales de
$LC_CTYPE
,locale
y tal pueden parecer atractivas, pero están completamente separadas de la codificación que la aplicación de terminal (en realidad un emulador) está usando al mostrar caracteres en la pantalla.La única forma de detectar la codificación con seguridad es generar algo que solo esté presente en la codificación, por ejemplo
ä
, tomar una captura de pantalla, analizar esa imagen y verificar si el carácter de salida es correcto.Entonces no, lamentablemente no es posible.
fuente
Para ver la información de configuración regional actual, use el
locale
comando. A continuación se muestra un ejemplo en RHEL 7.8fuente