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 por si mismos no comprenden el texto impreso como haría un humano. En lugar de esto, cada carácter del texto 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 jamás creado. 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 control de errores, se deja a 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. 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. Aunque se debe mencionar 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.

Todo esto ha llevado a grandes 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 prácticamente todos los caracteres que un usuario necesita. Mucha gente piensa erróneamente que Unicode es un conjunto de caracteres de 16 bits.

Unicode has been mapped in many different ways, but the two most common are UTF (Unicode Transformation Format) and UCS (Universal Character Set). A number after UTF indicates the number of bits in one unit, while the number after UCS indicates the number of bytes. UTF-8 has become the most widespread means for the interchange of Unicode text as a result of its eight-bit clean nature; it is therefore the subject of this document.

¿Qué puede hacer unicode?
UTF-8 allows users to work in a standards-compliant and internationally accepted multilingual environment, with a comparatively low data redundancy. It is the preferred way for transmitting non-ASCII characters over the Internet, through Email, IRC, or almost any other medium. Despite this, many people regard UTF-8 in online communication as abusive. It is always best to be aware of the attitude towards UTF-8 in a specific channel, mailing list, or Usenet group before using non-ASCII UTF-8.

Buscar o crear localizaciones UTF-8
Ahora que se han expuesto los principios detrás de Unicode, ¡Prepárese para comenzar a utilizar UTF-8 localmente!

For users interested in more knowledge further explanation can be found in the Gentoo Localization Guide.

Next, the user needs to decide whether a UTF-8 locale is available for the language of choice, or whether one needs to be generated.

From the output of the above command, look for a result with a suffix similar to. If there is no result with a similar suffix a UTF-8 compatible locale must be created.

Replace "en_GB" with the desired locale setting:

Another way to include a UTF-8 locale is to add it to the file and generate necessary locales using the locale-gen command. Locales will be written to the locale-archive.

Configurar la localización
There is one environment variable that needs to be set in order to use the new UTF-8 locales:  (optionally modify the   variable to change the system language as well). There are also many different ways to set it; some system administrators prefer to only have a UTF-8 environment for a specific user, in which case they set them in their (/bin/sh for Bourne shell users),  or  (/bin/bash for Bourne again shell users). More details and best practices can be found in the Localization Guide.

Still others prefer to set the locale globally. One specific circumstance where the author particularly recommends doing this is when is in use, because this init script starts the display manager and desktop before any of the aforementioned shell startup files are sourced. In other words, this is performed before any of the variables are loaded in the environment.

Setting the locale globally should be done using file. This file should look something like the following:

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

Now, run locale with no arguments to see if the correct variables have been loaded in the environment:

Usar eselect de forma alternativa para definir localizaciones
Aunque es correcto realizar el mantenimiento del sistema tal y como se describe arriba, es posible verificar la localización correcta que se ha configurado mediante la utilidad eselect.

Utilice eselect para listar las localizaciones disponibles en el sistema:

Usar eselect para ajustar la localización es tan simple como listarlas todas. Una vez que se ha determinado la localización, invoque:

Check the result:

In case it is preferred to have with   instead of , run the appropriate eselect command:

Al lanzar la siguiente orden, se actualizarán las variables en el intérprete de órdenes:

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

Soporte a aplicaciones
When Unicode first started gaining momentum in the software world, multibyte character sets were not well suited to languages like C, which is the base language of most commonly used programs. Even today, some programs are not able to handle UTF-8 properly. Fortunately the majority of programs, especially the common ones, are supported.

Nombres de Ficheros, NTFS y FAT
There are several NLS options in the Linux kernel configuration menu, but it is important to not become confused. For the most part, the only thing that needs to be done is to build UTF-8 NLS support into the kernel, and change the default NLS option to utf8.

When planning to mount NTFS partitions, users may need to specify a  option with mount. When planning on mounting FAT partitions, users may need to specify a  option with mount. Optionally, users can also set a default codepage for FAT in the kernel configuration.

Avoid setting  to UTF-8; it is not recommended. Instead, pass the  option when mounting FAT partitions. For further information man mount</tt> or see the appropriate kernel documentation at

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

A continuación se muestra el formato de la orden convmv</tt>:

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

For changing the contents of files, use the iconv</tt> utility, it comes bundled with and should be installed on all Gentoo systems. Substitute iso-8859-1 with the charset being converted from. After running the command be sure to check for sane output:

Para convertir un fichero, se deberá crear otro fichero:

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

La consola del sistema
To enable UTF-8 on the console edit Set   and read the comments -- it is important to have a font that has a good range of characters to make the most of Unicode. For this to work make sure the Unicode locale has been properly created.

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

Ncurses y Slang
It is wise to add  to the global USE flags in, and then to re-emerge  and. Portage will do this automatically if the  or   options are used. Run the following command to pull in the packages:

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.

On GTK+ based applications, the key sequence for hexadecimal Unicode input is Ctrl-Shift-u.

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.

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
TrueType fonts have support for Unicode, and most of the fonts that ship with Xorg have extensive character support, although, obviously, not every single glyph available in Unicode has been created for that font.

Also, many font packages in Portage are Unicode aware. See the Fontconfig page for more information on recommended fonts and configuration.

Window managers and terminal emulators
Window managers not built on GTK+ or Qt generally have very good Unicode support, as they often use the Xft library for handling fonts. If the window manager does not use Xft for fonts, then it is still possible to use the FontSpec mentioned in the previous section as a Unicode font.

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  :

Vim, emacs, xemacs and nano
Vim provides full UTF-8 support, and also has builtin detection of UTF-8 files. For further information in Vim, use.

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
Currently,  provides full Unicode support through the GNU readline library. Z Shell (zsh</tt>) offers Unicode support with the  USE flag.

The C shell, tcsh</tt> and ksh</tt> do not provide UTF-8 support at all.

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
The Mutt mail user agent has very good Unicode support. To use UTF-8 with Mutt, nothing needs to be put in the configuration files. Mutt will work under Unicode environment without modification if all the configuration files (signature included) are UTF-8 encoded.

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

Man
Man pages are an integral part of any Linux machine. To ensure that any unicode in the man pages render correctly, edit and replace a line as shown below.

links and elinks
Estos son navegadores en modo texto comúnmente usados, y debemos ver como podemos habilitar el soporte UTF-8 en ellos. En elinks</tt> y links</tt>, 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 elinks</tt> o links</tt> 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 links</tt> puede que se que tenga que repetir +  y luego presionar  para guardar. La opción del fichero de configuración se muestra abajo.

line) terminal "xterm" 0 1 0 us-ascii utf-8 }}
 * 1) (For links, edit ~/.links/links.cfg and add the following

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.

When using one of the text-only web browsers, make absolutely sure a Unicode-aware terminal is used.

If certain characters are displayed as boxes with letters or numbers inside, then the current font does not have a character for the symbol or glyph that the UTF-8 wants. Instead, it displays a box with the hex code of the UTF-8 symbol.


 * unicode-table.com
 * 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
Dead keys may be used to input characters in X that are not included on the keyboard. These work by pressing the right key (or in some countries, ) and an optional key from the non-alphabetical section of the keyboard to the left of the return key at once, releasing them, and then pressing a letter. The dead key should modify it. Input can be further modified by using the key at the same time as pressing the  and modifier.

To enable dead keys in X, a layout needs to be selected that supports it. Most European layouts already have dead keys with the default variant. However, this is not true of North American layouts. Although there is a degree of inconsistency between layouts, the easiest solution seems to be to use a layout in the form "en_US" rather than "us", for example. The layout is set in like so:

This change will come into effect when the X server is restarted. To apply the change now, use the setxkbmap</tt> tool, for example, setxkbmap en_US</tt>.

It is probably easiest to describe dead keys with examples. Although the results are locale dependent, the concepts should remain the same regardless of locale. The examples contain UTF-8, so to view them tell the browser to view the page as UTF-8, or have a UTF-8 locale already configured.

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 externos

 * 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
 * Localizaciones e Internacionalización

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.