UTF-8/es

UTF-8 es una codificación de caracteres de longitud variable, lo que implica que utiliza de 1 a 4 bytes para codificar cada símbolo. Por tanto, el primer byte UTF-8 se utiliza para codificar ASCII. UTF-8 significa que los caracteres ASCII y Latín se pueden intercambiar con un pequeño incremento en el tamaño de los datos, ya que únicamente se utiliza el primer byte. Los usuarios de alfabetos del este como el japonés, a los cuales se les ha asignado un rango más alto de los bytes no les gusta mucho esto, ya que esto implica un 50% mayor de redundancia en sus datos.

¿Qué es la Codificación de Caracteres?
Los ordenadores no comprenden el texto por ellos mismos. En lugar de esto, cada carácter se representa mediante un número. Tradicionalmente, cada conjunto de números se utilizó para representar alfabetos y caracteres (conocidos como sistema de codificación, codificación o conjunto de caracteres) estuvo limitado en el tamaño debido a limitaciones del hardware de los ordenadores.

La Historia de los Caracteres de Codificación
El más común (o al menos el más aceptado) conjunto de caracteres es ASCII (Código Estándar Americano para el Intercambio de Información). Es ampliamente aceptado de que ASCII es el estándar de software más exitoso de todos los tiempos. El ASCII actual se estandarizó en 1986 (ANSI X3.4, RFC 20, ISO/IEC 646:1991, ECMA-6) por el Instituto Nacional Americano de Estándares.

ASCII es una codificación estrictamente de siete bits, lo que significa que utiliza patrones representables con siete dígitos binarios, lo que proporciona una gama de 0 a 127 en decimal. Estos incluyen 32 caracteres de control no visibles, la mayoría entre 0 y 31, con el carácter de control final, DEL o de eliminación en el 127. Los caracteres del 32 al 126 son visibles: un espacio, marcas de puntuación, letras latinas y números.

El octavo bit en ASCII se utilizó originalmente como un bit de paridad para el control de errores. Si no se desea esta utilización, se deja como 0. Esto significa que, con ASCII, cada carácter se representa mediante un único byte.

A pesar de que ASCII era suficiente para comunicarse en inglés moderno, las cosas no eran tan fáciles en otras lenguas europeas que incluyen caracteres acentuados. Los estándares ISO 8859 se desarrollaron para satisfacer estas necesidades. Estos estándares eran compatibles con ASCII, pero en lugar de dejar el octavo bit en blanco, lo utilizaron para permitir otros 127 caracteres en cada codificación. Las limitaciones de los estándares ISO 8859 aparecieron pronto y actualmente hay 15 variantes del estándar ISO 8859 (del 8859-1 al 8859-15). Fuera del rango de bytes compatible con ASCII de estos conjuntos de caracteres hay a menudo conflicto entre las letras representadas por cada byte. Para complicar aún más la interoperabilidad entre las codificaciones de caracteres, en algunas versiones de Windows de Microsoft se utiliza la codificación Windows-1252 en lugar de los idiomas de Europa del oeste. Esto es un superconjunto de la codificación ISO 8859-1. Sin embargo, es diferente en algunos aspectos. Estos conjuntos no conservan completamente la compatibilidad con ASCII.

El desarrollo necesario de codificaciones de un solo byte completamente diferentes para alfabetos no latinos, como EUC (Codificación de Unix Extendido) que se utiliza para el japonés y el coreano (y en menor medida para el chino) creó aún más confusión, mientras otros sistemas operativos todavía utilizaban conjuntos de caracteres para los mismos idiomas, por ejemplo, Shift-JIS e ISO-2022-JP. Los usuarios que deseaban ver glifos cirílicos tenían que elegir entre KOI8-R para el ruso y el búlgaro o KOI8-U para el ucraniano, y así para las demás codificaciones cirílicas como el poco exitoso ISO 8859-5 o el común Windows-1251. Todos estos conjuntos de caracteres rompían en mayor o menor medida la compatibilidad con ASCII (a pesar de que las codificaciones KOI8 colocaban los caracteres cirílicos en el orden de los latinos, por lo que en el caso de que se eliminara el octavo bit, es texto se podía mostrar en un terminal ASCII a través de una transliteración inversa de mayúsculas).

Esto ha llevado a muchas confusiones y también a una discapacidad casi total para la comunicación multilingüe, especialmente entre alfabetos diferentes. Entramos en Unicode.

¿Qué es Unicode?
Unicode prescinde de utilizar un solo byte, el límite tradicional de los conjuntos de caracteres. Utiliza 17 "planos" de 65,536 puntos de código para describir un máximo de 1,114,112 caracteres. Como el primer plano, también conocido como "Plano Multilingüe Básico" o BMP, contiene casi todo lo que normalmente se utiliza, mucha gente piensa erróneamente que Unicode es un conjunto de caracteres de 16 bits.

Unicode se ha mapeado de muchas formas diferentes, pero las dos más comunes son UTF (Formato de Transformación Unicode) y UCS (Conjunto Universal de Caracteres). El número a continuación de las siglas UTF indica el número de bits en una unidad, por el contrario, el número a continuación de las siglas UCS indica el número de bytes. UTF-8 ha sido la forma más extendida de intercambiar texto Unicode debido a su naturaleza limpia de ocho bits y es el motivo de este documento.

¿Qué Puede Hacer Unicode por Nosotros?
UTF-8 le permite trabajar en un entorno que cumple los estándares y que es aceptado internacionalmente, con una redundancia de datos relativamente baja. UTF-8 es la forma preferida para transmitir caracteres que no son ASCII a través de Internet, mediante correo electrónico, IRC o casi cualquier otro medio. A pesar de esto, mucha gente piensa que la comunicación en línea de UTF-8 es abusiva. Es mejor conocer la actitud hacia UTF-8 en un canal en particular, en una lista de correo o grupo Usenet antes de utilizar UTF-8 no ASCII.

Buscar o Crear Localizaciones UTF-8
Ahora que comprende los principios que hay detrás de Unicode, puede comenzar a utilizar UTF-8 en su sistema.

El requisito preliminar para UTF-8 es tener una versión de glibc instalada que tenga soporte para el idioma nacional. La forma recomendada de hacer esto es el fichero. Sin embargo, explicar el uso de este fichero está más allá del alcance de este documento. Esto se explica en la Guía de Localización de Gentoo.

A continuación, necesitaremos decidir si una localización UTF-8 está disponible para nuestro idioma, o si necesitamos crear una.

De la salida de esta línea de órdenes, necesitamos tomar el resultado con un sufijo similar a. Si no hay ningún resultado con un sufijo similar a,  necesitaremos crear una localización compatible UTF-8.

Reemplace "en_GB" por el ajuste de localización deseado:

Otra forma de incluir una localización UTF-8 es añadirla al fichero y generar las localizaciones necesarias con la orden.

Línea en /etc/locale.gen

Configurar la Localización
Hay una variable de entorno que necesitará definir para utilizar nuestras nuevas localizaciones UTF-8:  (u opcionalmente , si también quiere cambiar el idioma del sistema). Hay distintas formas de ajustar este valor, algunas personas prefieren tener únicamente un entorno UTF-8 para un usuario específico, en cuyo caso se definen en su (si  utilizan  ),  o  (si utilizan  ). Se pueden encontrar más detalles y buenas prácticas en nuestra Guía de Localización.

Otros prefieren definir la localización de forma global. Una circunstancia específica en la que el autor recomienda hacer esto es cuando se utiliza ya que este guión inicio arranca el gestor de pantalla y el escritorio antes de que ninguno de los ficheros del intérprete de comandos anteriormente citados se ejecuten y, por tanto, antes de que las variables estén definidas en el entorno.

La localización de forma global se debe definir utilizando. Este fichero debería parecerse al siguiente:

Demostración /etc/env.d/02locale

A continuación se debe actualizar el entorno para reflejar el cambio.

Ahora ejecute  sin argumentos para ver si tenemos las variables correctas en nuestro entorno:

Eso es todo. Ahora está utilizando localizaciones UTF-8. El siguiente obstáculo es la configuración de las aplicaciones que utiliza diariamente.

Soporte a Aplicaciones
Cuándo Unicode comenzó a ganar popularidad en el mundo del software, los conjuntos de caracteres multibyte no eran apropiados para lenguajes de programación como C en el que se escriben muchos de los programas que la gente usa a diario. Incluso hoy, algunos programas no pueden manejar UTF-8 correctamente. Afortunadamente, ¡La mayoría puede hacerlo!

Nombres de Ficheros, NTFS y FAT
Hay varias opciones NLS en el menú de configuración del núcleo Linux, pero, ¡Es importante no confundirse!. En la mayoría de las situaciones, lo único que necesita hacer es construir el soporte NLS UTF-8 en su núcleo y cambiar la opción NLS por defecto a utf8.

Si va a montar particiones NTFS, puede necesitar especificar una opción  para la orden mount. Si va a montar particiones FAT, puede que necesite especificar una opción  para la orden mount. Opcionalmente puede también definir una página de códigos (codepage) para FAT por defecto en la configuración del núcleo. Observe que la opción  de la orden mount pasará por alto los ajustes realizados en el núcleo.

Debe evitar definir  (Conjunto de caracteres de E/S por defecto para FAT) a UTF-8, ya que no está recomendado. En lugar de esto, puede que quiera pasar la opción utf8=true cuando monte sus particiones FAT. Para más información, consulte  y la documentación del núcleo en.

Para cambiar la codificación de los nombres de los ficheros, se puede utilizar.

A continuación se muestra el formato de la orden :

Sustituya iso-8859-1 por el conjunto de caracteres desde el que está convirtiendo:

Para cambiar el contenido de los ficheros, se puede emplear la utilidad  que está incluida en. Sustituya iso-8859-1 por el conjunto de caracteres desde el que está convirtiendo y compruebe que la salida es correcta.

Para convertir un fichero, deberá crear otro fichero:

se puede utilizar también para este propósito.

La Consola del Sistema
Para habilitar UTF-8 en la consola, debe editar y definir , y también leer los comentarios en ese fichero. Es importante tener una fuente que tenga un buen rango de caracteres si pretende obtener el máximo de Unicode. Para que esto funcione, asegúrese de que ha creado una localización Unicode de forma correcta.

La variable  definida en  debería especificar un mapa de teclado Unicode.

Fragmento ejemplo de /etc/conf.d/keymaps

Ncurses y Slang
Es sensato añadir  a sus opciones USE globales en, y hacer de nuevo emerge de  y de  si procede. Portage hará esto de forma automática cuando actualice su sistema.

También necesitamos reconstruir los paquetes que enlazan a éstos, ahora se han aplicado los cambios a USE. La herramienta que utilizamos es parte del paquete.

KDE, GNOME y Xfce
Todos los entornos de escritorio de mayor uso tienen soporte completo para Unicode y no requieren de configuraciones adicionales que ya se hayan comentado en esta guía. Esto es debido a que las herramientas gráficas (Qt o GTK+2) ya son compatibles con UTF-8. Por tanto, todas las aplicaciones que corran sobre estas herramientas deberían ser compatibles UTF-8.

Las excepciones a esta regla son Xlib y GTK+1. GTK+1 requiere un FontSpec iso-10646-1 en el fichero /.*gtkrc, por ejemplo. También, las aplicaciones que utilizan Xlib o Xaw necesitarán tener un FontSpec similar, de lo contrario no funcionarán.

Ejemplo de fichero ~/.gtkrc (para GTK+1) que define una fuente compatible con Unicode

Si una aplicación tiene soporte para las interfaces gráficas Qt y GTK+2, la interfaz gráfica GTK+2 normalmente ofrecerá mejores resultados con Unicode.

X11 y Fuentes
Las fuentes TrueType tienen soporte para Unicode, y la mayoría de las fuentes que se entregan con Xorg tiene un soporte de carácter impresionante, aunque, obviamente, no todos los glifos disponibles en Unicode se han creado para todas las fuentes. Para construir fuentes (incluyendo el conjunto Bitstream Vera) con soporte para letras del este de Asia con X, asegúrese de que tiene definida la opción USE. Muchas otras aplicaciones utilizan esta opción, por lo que merece la pena añadirla como una opción USE permanente.

También, varios paquetes de fuentes en Portage son compatibles con Unicode.

Gestores de Ventanas y Emuladores de Terminal
Los gestores de ventanas que no se han construido con GTK o Qt generalmente tienen muy buen soporte para Unicode, ya que a menudo utilizan la biblioteca Xft para el manejo de fuentes. Si su gestor de ventanas no utiliza Xft para las fuentes, puede utilizar FontSpec mencionado en la sección anterior como una fuente Unicode.

Los emuladores de terminal que utilicen Xft y tengan soporte unicode son más difíciles de encontrar. Aparte de Konsole y gnome-terminal, las mejores opciones en Portage son, , , , or plain  cuando se construye con la opción USE   y se invoca como. también ofrece soporte para UTF-8 cuando se invoca como  o se incluye lo siguiente en el fichero  :

~/.screenrc para UTF-8

Vim, Emacs, Xemacs y Nano
Vim ofrece soporte completo para UTF-8 support y también la detección automática de ficheros codificados con UTF-8. Para más información, dentro de Vim, utilice.

GNU Emacs Desde la versión 23 y XEmacs desde la versión 21.5 tiene soporte completo para UTF-8. GNU Emacs 24 también tiene soporte para la edición de texto bidireccional.

Nano proporciona soporte UTF-8 completo desde la versión 1.3.6.

Intérpretes de Comandos
Actualmente  ofrece soporte completi Unicode a través de la librería GNU readline. Z Shell ofrece soporte Unicode mediante la opción USE.

Los interpretes de comandos C,  y   no ofrecen ningún tipo de soporte UTF-8.

Irssi
Irssi ofrece soporte completo de UTF-8, aunque requiere que el usuario active una opción.

Para canales en los que se intercambian con frecuencia caracteres que no son ASCII mediante conjuntos de caracteres que no son UTF-8, la orden  se puede utilizar para convertir caracteres. Teclee  para obtener más información.

Mutt
El agente de correo de usuario Mutt tiene muy buen soporte para Unicode. Para utilizar UTF-8 con Mutt, no necesitará poner nada en su fichero de configuración. Mutt funcionará en un entorno unicode si ninguna modificación si todos los ficheros de configuración (incluida la firma) están codificados con UTF-8.

Hay más información en el Wiki de Mutt.

Man
Las páginas del manual (man) son parte integral de una máquina Linux. Para asegurarse de que cualquier unicode en las páginas del manual se muestra correctamente, edite y cambien la línea que se muestra abajo.

Cambios en man.conf para soporte Unicode

elinks y links
Estos son navegadores en modo texto comúnmente usados, y debemos ver como podemos habilitar el soporte UTF-8 en ellos. En  y , hay dos formas de hacer esto, una es utilizando la opción de configuración dentro del navegador y otra es editar el fichero de configuración. Para activar la opción dentro del navegador, abra un sitio con  o   y presione  +  para entrar en le menú de configuración. A continuación seleccione las opciones del terminal, o presione. Desplácese hacia abajo y seleccione la última opción  presionando. Luego guarde y salga del menú. En  puede que tenga que repetir  +  y luego presionar  para guardar. La opción del fichero de configuración se muestra abajo.

Habilitar UTF-8 para elinks o links

Samba
Samba es una suite de software que implementa el protocolo SMB (Bloque de Mensajes del Servidor) para sistemas UNIX como Macs, Linux y FreeBSD. A este protocolo también se le llama Sistema de Ficheros Común de Internet (CIFS). Samba también incluye el sistema NetBIOS, utilizado para compartir ficheros en redes con sistemas Windows.

añada lo siguiente bajo la sección [global]:

Probarlo todo
Hay varios sitios Web de prueba para UTF-8. ,, , y todos los navegadores basados en Mozilla (incluyendo Firefox) ofrecen soporta para UTF-8. Konqueror y Opera también ofrecen soporte completo para UTF-8.

Cuándo se utiliza un navegador en modo texto, asegúrese bien de que lo está utilizando desde un terminal que es compatible con Unicode.

Si observa ciertos caracteres mostrados como pequeñas cajas con letras o números dentro, significa que su fuente no tiene un carácter para el símbolo o glifo que demanda UTF-8. En lugar de ello, se muestra una caja con el código hexadecimal del símbolo UTF-8.


 * Una página de prueba UTF-8 de W3C
 * Una página de prueba UTF-8 ofrecida por la Universidad de Fráncfort

Métodos de Entrada
Se pueden utilizar las teclas muertas para introducir caracteres en el sistema X que no está presentes en su teclado. Esto funciona presionando a la vez la tecla de la derecha (o en algunos países, ) y opcionalmente una tecla de la sección no alfabética del teclado a la izquierda de la tecla Intro, soltando ambas y pulsando una letra. La tecla muerta debería modificarla. La entrada se puede modificar más tarde utilizando la tecla al mismo que tiempo que se pulsa la tecla  y el modificador.

Para habilitar las teclas muertas en el sistema X, se necesita una disposición que lo soporte. La mayoría de las disposiciones europeas ya incorporan teclas muertas con la variante por defecto. Sin embargo, esto no es así para las disposiciones norteamericanas. Aunque hay cierto grado de inconsistencia entre disposiciones, la forma más fácil parece utilizar una disposición de la forma "en_US" en lugar de "us", por ejemplo. El diseño se define en de esta forma:

Fragmento de /etc/X11/xorg.conf

Este cambio tendrá efecto cuando reinicie su servidor X. Para aplicar el cambio en este momento, utilice la herramienta, por ejemplo.

Probablemente las teclas muertas se describen de forma más fácil con ejemplos. Aunque los resultados dependen de la localización, los conceptos deben ser los mismos independientemente de la localización. Los ejemplos contienen UTF-8, por lo tanto, para verlos necesita indicarle a su navegador que vea las páginas como UTF-8, o tener una localización UTF-8 ya configurada.

Cuando se pulsan las teclas y  al mismo tiempo y se sueltan ambas, y a continuación se presiona, se obtiene el carácter 'ä'. Cuando se presionan y  al mismo tiempo y a continuación se presiona, se obtiene el carácter 'ë'. Cuando se presionan y  al mismo tiempo, y a continuación se presiona, se obtiene el carácter 'á' y cuando se presionan  y  al mismo tiempo, se sueltan y se pulsa , se obtiene el carácter 'é'.

Presionando al mismo tiempo, y  , soltándolas, y presionando , se obtiene el carácter escandinavo 'å'. De modo similar, cuando se presiona, and  al mismo tiempo, se suelta "solo" la tecla  y se presiona de nuevo, se produce el carácter '°'. Aunque parece un solo carácter, éste (U+02DA) no es el mismo que el símbolo utilizado para indicar grados (U+00B0).

Se puede utilizar únicamente con teclas alfabéticas. Por ejemplo, y  producen el carácter griego mu minúscula. y  producen una s scharfes o esszet, etc. Muchos usuarios europeos deberían esperar (porque está marcado en su teclado) que  y  (o  dependiendo de la disposición del teclado) producen el símbolo del Euro, '€'.

Recursos

 * La entrada en Wikipedia para Unicode
 * La entrada en Wikipedia para *UTF-8
 * Unicode.org
 * Utf-8.com
 * RFC 3629
 * RFC 2277
 * Caracteres vs. Bytes

Ficheros de Configuración del Sistema (en /etc)
La mayoría de los ficheros de configuración del sistema, como, no ofrecen soporte para UTF-8. Se recomienda ajustarse al conjunto de caracteres ASCII cuando se editen estos ficheros.

Agradecimientos
Nos gustarían dar las gracias a los siguientes autores y editores por sus contribuciones a esta guía:


 * Thomas Martin
 * Alexander Simonov
 * Shyam Mani
 * nightmorph