unicode(7)

NOMBRE
unicode - conjunto de caracteres universal

DESCRIPCIÓN
El estándar internacional ISO/IEC 10646 define el conjunto de caracteres UCS (Universal Character Set - Conjunto de Caracteres Universal). UCS contiene todos los caracteres de todos los demás estándares de conjuntos de caracteres. También garantiza una compatibilidad de ida y vuelta (round-trip), es decir, se pueden construir tablas de conversión de tal forma que no se pierda ninguna información cuando una cadena se convierta desde cualquier otra codificación a UCS y viceversa.

UCS contiene los caracteres necesarios para representar prácticamente todos los lenguajes conocidos. Esto incluye no sólo los alfabetos latino, griego, cirílico, árabe, armenio y georgiano sino también chino, japones y la variante Han de los ideogramas coreanos además de alfabetos como Hiragana, Katakana, Hangul, Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam, Thai, Lao, Khmer, Bopomofo, Tibetan, Runic, Ethiopic, Canadian Syllabics, Cherokee, Mongolian, Ogham, Myanmar, Sinhala, Thaana, Yi y otros. Para aquellos alfabetos aún no cubiertos, todavía se está investigando cómo codificarlos de la mejor manera posible para su uso en sistemas informáticos. Al final, esto podría incluir no sólo jeroglíficos y varios lenguajes indo-europeos históricos sino incluso algunos alfabetos artísticos seleccionados como Tengwar, Cirth y Klingon. UCS abarca también un gran número de símbolos gráficos, tipográficos, matemáticos y científicos, que incluyen aquellos provistos por TeX, Postscript, APL, MS-DOS, MS-Windows, Macintosh, fuentes OCR, así como varios sistemas de procesamiento de texto y publicación, añadiéndose más cada día.

El estándar UCS (ISO/IEC 10646) describe una arquitectura del conjunto de caracteres de 31 bits que consiste en 128 grupos de 24 bits, cada uno dividido en 256 planos de 16 bits formados por 256 filas con 256 columnas, una por cada carácter. La primera parte del estándar (ISO 10646-1) define las primeras 65534 posiciones de los códigos (0x0000 a 0xfffd), que forman el BMP (Basic Multilingual Plane - Plano Multilingüe Básico), que es el plano 0 en el grupo 0. La segunda parte del estándar (ISO 10646-2) añade caracteres al grupo 0 fuera del BMP en varios planos adicionales en el rango de 0x10000 a 0x10ffff. No hay intenciones de añadir caracteres al estándar más allá de 0x10ffff, por consiguiente, de todo el espacio de códigos, solamente una pequeña fracción del grupo 0 será usada realmente en un futuro previsible. El BMP contiene todos los caracteres que se encuentran en los otros conjuntos de caracteres usados frecuentemente. Los planos adicionales añadidos por ISO 10646-2 abarcan sólo más caracteres exóticos para necesidades científicas especiales, impresión de diccionarios, industria de la publicación, protocolos de más alto nivel y necesidades entusiastas.

La representación de cada carácter UCS como una palabra de 2 bytes es referida como la forma UCS-2 (sólo para caracteres BMP), mientras que UCS-4 es la representación de cada carácter como una palabra de 4 bytes. Además, existen dos formas de codificación, UTF-8 por compatibilidad hacia atrás con software que maneje ASCII y UTF-16 por compatibilidad hacia atrás con software UCS-2 que maneje caracteres fuera del BMP por debajo de 0x10ffff.

Los caracteres UCS del 0x0000 al 0x007f son idénticos a los del conjunto de caracteres clásico US-ASCII y los caracteres en el rango de 0x0000 a 0x00ff son idénticos a los del conjunto de caracteres ISO/IEC 8859-1 (Latin-1).

  Caracteres de combinación
Algunos puntos de código en UCS se han asignado a caracteres de combinación. Son similares a las teclas de acento sin espacio en una máquina de escribir. Un carácter de combinación simplemente añade un acento al carácter anterior. Los caracteres acentuados más importantes tienen sus propios códigos en UCS; sin embargo, el mecanismo de caracteres de combinación permite añadir acentos y otras marcas diacríticas a cualquier carácter. Los caracteres de combinación siempre siguen El carácter que modifican. Por ejemplo, el carácter alemán Umlaut-A ('letra A mayúscula latina con diéresis') puede representarse mediante el código UCS precompuesto 0x00c4 o, alternativamente, como la combinación de una 'letra A mayúscula latina' normal seguida de una 'diéresis combinada': 0x0041 0x0308.

Los caracteres de combinación son esenciales para, por ejemplo, codificar el alfabeto Tai o para tipografía matemática y para usuarios del Alfabeto Fonético Internacional.

  Niveles de implementación
Puesto que no se espera que todos los sistemas soporten mecanismos avanzados tales como los caracteres de combinación, el ISO/IEC 10646-1 especifica los siguientes tres niveles de implementación de UCS:

Nivel 1
    Los caracteres de combinación y caracteres Hangul Jamo (una codificación especial del coreano, en la que un glifo (glyph) de una sílaba Hangul se codifica como una terna o un par de códigos de vocal/consonante) no están implementados.

Nivel 2
    Además de los del nivel 1, se permiten caracteres de combinación para algunos idiomas donde resultan esenciales (p.ej., Tai, Lao, hebreo, árabe, Devangari, Malayalam).

Nivel 3
    Todos los caracteres de UCS están soportados.

El estándar Unicode 3.0 publicado por el Consorcio Unicode contiene exactamente el Plano Multilingüe Básico UCS implementado al nivel 3, según se describe en ISO/IEC 10646:2000. Unicode 3.1 añade los planos adicionales de ISO 10646-2. El estándar Unicode y los informes técnicos publicados por el Consorcio Unicode proporcionan mucha información adicional sobre la semántica y los usos recomendados de varios caracteres. Proporcionan pautas y algoritmos para editar, ordenar, comparar, normalizar, convertir y mostrar cadenas Unicode.

  Unicode en Linux
Bajo GNU/Linux, el tipo en C wchar_t es un tipo entero de 32 bits con signo. Sus posibles valores son interpretados siempre por la biblioteca C como códigos UCS (en todas las localizaciones), una convención que es notificada por la biblioteca C de GNU a las aplicaciones definiendo la constante __STDC_ISO_10646__ tal como se especifica en el estándar ISO C 99.

El estándar UCS/Unicode puede ser utilizado exactamente igual que el ASCII en flujos de entrada/salida, comunicación con la terminal, ficheros en texto plano, nombres de fichero y variables de entorno en la codificación multibyte UTF-8 compatible con ASCII. Para indicar el uso de UTF-8 como codificación de caracteres a todas las aplicaciones, debe seleccionarse una locale adecuada a través de las variables de entorno (p.ej., "LANG=en_GB.UTF-8").

La función nl_langinfo(CODESET) devuelve el nombre de la codificación escogida. Pueden utilizarse funciones de biblioteca tales como wctomb(3) y mbsrtowcs(3) para convertir los caracteres y cadenas internas wchar_t a la codificación de caracteres del sistema y viceversa, y la función wcwidth(3) para averiguar cuantas posiciones (0–2) avanzó el cursor al escribir un carácter.

  Áreas de uso privado (PUA)
In the Basic Multilingual Plane, the range 0xe000 to 0xf8ff will never be assigned to any characters by the standard and is reserved for private usage. For the Linux community, this private area has been subdivided further into the range 0xe000 to 0xefff which can be used individually by any end-user and the Linux zone in the range 0xf000 to 0xf8ff where extensions are coordinated among all Linux users. The registry of the characters assigned to the Linux zone is maintained by LANANA and the registry itself is Documentation/admin-guide/unicode.rst in the Linux kernel sources.

Dos planos más están reservados para uso privado, el plano 15 (Uso adicional Area-A, range de 0xf0000 a 0xffffd) y el plano 16 (Uso adicional Area-B, range de 0x100000 a 0x10fffd).

  Literatura

•   Information technology — Universal Multiple-Octet Coded CharacterSet (UCS) — Part 1: Architecture and Basic Multilingual Plane.International Standard ISO/IEC 10646-1, International Organizationfor Standardization, Geneva, 2000.

    This is the official specification of UCS. Available from http://www.iso.ch/.

•   The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.

•   S. Harbison, G. Steele. C: A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.

    Una buena referencia sobre el lenguaje de programación C. La cuarta edición abarca la Enmienda 1 de 1994 al estándar ISO C 90, que añade un gran número de nuevas funciones a la biblioteca de C para manejar codificaciones de caracteres anchos y multibyte, pero que aún no cubre el estándar ISO C 99, que mejoró el soporte para caracteres anchos y multibyte aún más.

•   Unicode Technical Reports.
    http://www.unicode.org/reports/

•   Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
    http://www.cl.cam.ac.uk/~mgk25/unicode.html

•   Bruno Haible: Unicode HOWTO.
    http://www.tldp.org/HOWTO/Unicode-HOWTO.html

VÉASE TAMBIÉN
locale(1), setlocale(3), charsets(7), utf-8(7)

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.