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 Latin 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 están muy contentos, 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 erant 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, tambien 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 redundacia 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.

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, and so before any of the variables are in the environment.

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

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

Next, the environment must be updated with the change.

Now, run  with no arguments to see if we have the correct variables in our environment:

That's everything. You are now using UTF-8 locales, and the next hurdle is the configuration of the applications you use from day to day.

Soporte a Aplicaciones
When Unicode first started gaining momentum in the software world, multibyte character sets were not well suited to languages like C, in which many of the day-to-day programs people use are written. Even today, some programs are not able to handle UTF-8 properly. Fortunately, most are!

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 you need to do is to build UTF-8 NLS support into your kernel, and change the default NLS option to utf8.

If you plan on mounting NTFS partitions, you may need to specify an  option with mount. If you plan on mounting FAT partitions, you may need to specify a  option with mount. Optionally, you can also set a default codepage for FAT in the kernel configuration. Note that the  option with mount will override the kernel settings.

You should avoid setting  to UTF-8, as it is not recommended. Instead, you may want to pass the option utf8=true when mounting your FAT partitions. For further information, see  and the kernel documentation at.

For changing the encoding of filenames,  can be used.

The format of the  command is as follows:

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

For changing the contents of files, use the  utility, bundled with. Substitute iso-8859-1 with the charset you are converting from, and check that the output is sane:

To convert a file, you must create another file:

can also be used for this purpose.

La Consola del Sistema
To enable UTF-8 on the console, you should edit and set  , and also read the comments in that file -- it is important to have a font that has a good range of characters if you plan on making the most of Unicode. For this to work, make sure you have properly created a Unicode locale.

The  variable, set in , should have a Unicode keymap specified.

Example /etc/conf.d/keymaps snippet

Ncurses y Slang
It is wise to add  to your global USE flags in , and then to remerge   and   if appropriate. Portage will do this automatically when you update your system:

We also need to rebuild packages that link to these, now the USE changes have been applied. The tool we use is part of the   package.

KDE, GNOME y Xfce
All of the major desktop environments have full Unicode support, and will require no further setup than what has already been covered in this guide. This is because the underlying graphical toolkits (Qt or GTK+2) are UTF-8 aware. Subsequently, all applications running on top of these toolkits should be UTF-8-aware out of the box.

The exceptions to this rule come in Xlib and GTK+1. GTK+1 requires a iso-10646-1 FontSpec in the ~/.gtkrc, for example. Also, applications using Xlib or Xaw will need to be given a similar FontSpec, otherwise they will not work.

Example ~/.gtkrc (for GTK+1) that defines a Unicode compatible font

If an application has support for both a Qt and GTK+2 GUI, the GTK+2 GUI will generally give better results with Unicode.

X11 y Fuentes
TrueType fonts have support for Unicode, and most of the fonts that ship with Xorg have impressive character support, although, obviously, not every single glyph available in Unicode has been created for that font. To build fonts (including the Bitstream Vera set) with support for East Asian letters with X, make sure you have the  USE flag set. Many other applications utilise this flag, so it may be worthwhile to add it as a permanent USE flag.

Also, several font packages in Portage are Unicode aware.

Gestores de Ventanas y Emuladores de Terminal
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 your window manager does not use Xft for fonts, you can still use the FontSpec mentioned in the previous section as a Unicode font.

Terminal emulators that use Xft and support Unicode are harder to come by. Aside from Konsole and gnome-terminal, the best options in Portage are ,   ,   ,   , or plain   when built with the   USE flag and invoked as. supports UTF-8 too, when invoked as  or the following is put into the  :

~/.screenrc for UTF-8

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 since version 23 and XEmacs version 21.5 have full UTF-8 support. GNU Emacs 24 also supports editing bidirectional text.

Nano has provided full UTF-8 support since version 1.3.6.

Shells
Currently,  provides full Unicode support through the GNU readline library. Z Shell offers Unicode support with the   USE flag.

The C shell,  and   do not provide UTF-8 support at all.

Irssi
Irssi has complete UTF-8 support, although it does require a user to set an option.

For channels where non-ASCII characters are often exchanged in non-UTF-8 charsets, the  command may be used to convert the characters. Type  for more information.

Mutt
The Mutt mail user agent has very good Unicode support. To use UTF-8 with Mutt, you don't need to put anything in your configuration files. Mutt will work under unicode enviroment without modification if all your configuration files (signature included) are UTF-8 encoded.

Further information is available from the Mutt Wiki.

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.

man.conf changes for Unicode support

elinks y links
These are commonly used text-based browsers, and we shall see how we can enable UTF-8 support on them. On  and  , there are two ways to go about this, one using the Setup option from within the browser or editing the config file. To set the option through the browser, open a site with  or   and then   to enter the Setup Menu then select Terminal options, or press. Scroll down and select the last option  by pressing Enter. Then Save and exit the menu. On  you may have to do a repeat   and then press   to save. The config file option, is shown below.

Enabling UTF-8 for elinks/links

Samba
Samba is a software suite which implements the SMB (Server Message Block) protocol for UNIX systems such as Macs, Linux and FreeBSD. The protocol is also sometimes referred to as the Common Internet File System (CIFS). Samba also includes the NetBIOS system - used for file sharing over windows networks.

add the following under the [global] section:

Probándolo todo
There are numerous UTF-8 test websites around. , ,   ,   and all Mozilla based browsers (including Firefox) support UTF-8. Konqueror and Opera have full UTF-8 support too.

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

If you see certain characters displayed as boxes with letters or numbers inside, this means that your 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.


 * A W3C UTF-8 Test Page
 * A UTF-8 test page provided by the University of Frankfurt

Métodos de Entrada
Dead keys may be used to input characters in X that are not included on your keyboard. These work by pressing your right Alt key (or in some countries, AltGr) 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 Shift key at the same time as pressing the AltGr and modifier.

To enable dead keys in X, you need a layout 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:

/etc/X11/xorg.conf snippet

This change will come into effect when your X server is restarted. To apply the change now, use the  tool, for example,.

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 you need to either tell your browser to view the page as UTF-8, or have a UTF-8 locale already configured.

When I press AltGr and [ at once, release them, and then press a, 'ä' is produced. When I press AltGr and [ at once, and then press e, 'ë' is produced. When I press AltGr and ; at once, 'á' is produced, and when I press AltGr and ; at once, release them, and then press e, 'é' is produced.

By pressing AltGr, Shift and [ at once, releasing them, and then pressing a, a Scandinavian 'å' is produced. Similarly, when I press AltGr, Shift and [ at once, release only the [, and then press it again, '°' is produced. Although it looks like one, this (U+02DA) is not the same as a degree symbol (U+00B0).

AltGr can be used with alphabetical keys alone. For example, AltGr and m, a Greek lower-case letter mu is produced. AltGr and s produce a scharfes s or esszet, etc. As many European users would expect (because it is marked on their keyboard), AltGr and 4 (or E depending on the keyboard layout) produces a Euro sign, '€'.

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)
Most system configuration files, such as, do not support UTF-8. It is recommended to stick with the ASCII character set for these files.

Agradecimientos
We would like to thank the following authors and editors for their contributions to this guide:


 * Thomas Martin
 * Alexander Simonov
 * Shyam Mani
 * nightmorph