UNICODE(7)

NOMBRE
Unicode - super-conjunto unificado de caracteres de 16-bit

DESCRIPCIÓN
El estándard internacional ISO 10646 define el conjunto de caracteres UCS (Universal Character Set - Conjunto de Caracteres Universal). UCS contiene todos los caracteres del resto de estándares de conjuntos de caracteres. También garantiza compatibilidad de ida y vuelta, es decir, se pueden construir tablas de conversión de tal forma que no se pierda ninguna información cuando se convierta una cadena desde cualquier otra codificación a UCS y viceversa. UCS contiene el conjunto de caracteres necesarios para representar casi todos los lenguages conocidos. Esto incluye, además de los numerosos lenguages que usan una extensión de la escritura Latina, los siguientes alfabetos y lenguages: Griego, Cirílico, Hebreo, Árabe, Armenio, Gregoriano, Japonés, Chino, Hiragana, Katakana, Coreano, Hanguliano, Devangari, Bengalí, Gurmuki, Gujarati, Oriya, Tamil , Telugu, Kannada, Malayam, Tai, Lao, Bopomofo, y algunos otros. Se sigue trabajando en la inclusión de alfabetos tales como Tibetano, Kumer, Runico, Etiope, Jeroglíficos, y varios lenguages indo-europeos. En el momento de la publicación del estandard en en 1993, aún no resultaba claro la mejor manera de codificar dichos alfabetos. Además de los caracteres necesarios para estos alfabetos, también se han incluido un enorme número de símbolos gráficos, tipográficos, matemáticos y cintíficos, como los proporcionados por TeX, PostScript, MS-DOS, Macintosh, Videotext, OCR, y muchos otros sistemas de procesamiento de textos, además de códigos especiales que garanticen la compatibilidad de ida y vuelta con todos los estandares existentes. El estándar UCS (ISO 10646) describe una arquitectura de caracteres de 31 bits. No obstante, hoy en dia sólo los primeros 65534 códigos (desde 0x0000 a 0xfffd), que se denominan Basic Multilingual Plane (BMP), han sido asignados como caracteres, y se espera que solo los caracteres muy exóticos (tales como jeroglificos) de uso especial científico obtengan un sitio fuera en esta BMP de 16 bits. Los caracteres UCS 0x0000 a 0x007f son idénticos a los del conjunto de caracteres US-ASCII y aquellos en el rango de 0x0000 a 0x00ff son idénticos a los del conjunto de caracteres ISO 8859-1 Latin-1

CARACTERES DE COMBINACIÓN
Algunos códigos en UCS han sido asignados como caracteres de combinación. Éstos son similares a las teclas de acento en una máquina de escribir. Un carácter de combinación sólo añade un acento al caráter previo. Los caracteres acentuados más importantes tienen códigos propios en UCS, sin embargo, el mecanismo de combinación de caracteres permite añadir acentos y otras marcas diacríticas a cualquier carácter. El carácter de combinación siempre sigue al carácter al cual modifica. Por ejemplo, en alemán el carácter Umlaut-A ("A mayúscula con diéresis") puede representarse como la combinación prefabricada UCS 0x00c4, ó alternativamente como la combinación de "A mayúscula" seguida por "dieresis de combinación": 0x0041 0x0308.

GRADOS DE IMPLIMENTACIÓN
Puesto que no se espera que todos los sistemas soporten los mecanismos avanzados como los caracteres de combinación, el ISO 10646 especifica los siguientes tres grados de implementación: UCS:

Grado 1
    Los caracteres de combinación y caracteres Hangul Jamo (una codificación del koreano un tanto complicada en la que las sílabas Hangul se codifican como 2 ó 3 subcaracteres) no están implementados.

Grado 2
    Igual que el Grado 1, sin embargo en algunos alfabetos se permiten algunos caracteres de combinación (por ej. Hebreo, Árabe, Devangari, Bengalii, Gurmukhi, Oriya, Tamil, Telugo, Kannada, Malayalam, Tai, y Lao).

Grado 3
    Todos los caracteres de UCS están implementados.

El estandard Unicode 1.1 publicado por Unicode Consortium contiene exactamente el UCS Basic Multilingual Plane implementado en grado 3, según se describe en ISO 10646. Unicode 1.1 también añade algunas definiciones semánticas para ciertos caracteres de ISO 10646.

UNICODE EN LINUX
En Linux, sólo se debe usar el BMP de grado 1 por el momento, a fin de mantener la complejidad de la implementación de combinación de caracteres al mínimo. Los grados de implementacion superiores son más apropiados para ciertos formatos de procesamiento de textos, pero no como conjunto de caracteres de un sistema genérico. El tipo C wchar_t es un entero sin signo de 16 bits en Linux y sus valores se interpretan como códigos BMP de Grado 1 de UCS La asignacion de localidad especifica si la codificación del sistema de caracteres es por ejemplo UTF-8 o ISO 8859-1. Se pueden utilizar las funciones de biblioteca como wctomb, mbtowc, ó wprintf para transformar los caracteres y cadenas internas wchar_t en la codificación de caracteres del sistema y viceversa.

AREA PRIVADA
En el BMP, ningún caracter del estándar se asigna en el rango de 0xe000 a 0xf8ff, dicha area se reserva para uso privado. En la comunidad Linux, este area ha sido subdividida en la zona 0xe000 a 0xefff que puede ser utilizada por cualquier usuario y la zona Linux en el rango 0xf000 to 0xf8ff donde se coordinan la extensiones entre todos los usuarios de Linux. El registro de los caracteres asignados a la zona Linux está mantenido, en el momento presente, por H. Peter Anvin <Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. Ésta contiene algunos caracteres gráficos DEC VT100 de los que Unicode carece, da acceso directo a los caracteres en el tampón de tipos de letra de la consola y contiene los caracteres usados en algunos alfabetos avanzados como Klingon.

LITERATURA

*   Information technology - Universal Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and Basic Multilingual Plane. International Standard ISO 10646-1, International Organization for Standardization, Geneva, 1993. Esta es la especificación oficial de UCS. Bien oficial, bien gruesa y bien cara. Para obtener más informacion, consultar www.iso.ch.

*   The Unicode Standard - Worldwide Character Encoding Version 1.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 1991. Ya está disponible Unicode 1.1.4, Los cambios al libro 1.0 están disponibles a través de ftp.unicode.org. Unicode 2.0 será publicado de nuevo como libro durante 1996.

*   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 ahora cubre también el "1994 Amendment 1 to the ISO C standard (ISO/IEC 9899:1990)", el cual añade un buen número de funciones C para manejar conjuntos de caracteres amplios.

BUGS
En el momento de la edición de esta página, el soporte libc de UCS estaba bastante lejos de ser completo.

AUTOR
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>

VÉASE TAMBIÉN
utf-8(7)