Provided by:
manpages-es_1.55-9_all 
NOMBRE
Unicode - el Conjunto de Caracteres Universal
DESCRIPCIÓN
El estándar internacional ISO 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 computadores y
finalmente se añadirán. 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, sin incluir los que se añaden cada día.
El estándar UCS (ISO 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 clásico
conjunto de caracteres US-ASCII y los caracteres 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
combinacin. É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ácter 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. Los caracteres de combinación siempre siguen al
carácter al cual modifican. Por ejemplo, en alemán el carácter Umlaut-A
("A mayúscula con diéresis") puede representarse por el ya compuesto
código UCS 0x00c4, o alternativamente como la combinación de una "A
mayúscula" normal seguida por una "diéresis de combinación": 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 10646-1
especifica los siguientes tres grados de implementación del 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, etc.).
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 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 localización 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 caracter.
En Linux, por el momento sólo se debe usar el BMP de nivel 1. También
están soportados por algunos emuladores de terminal UTF-8 y fuentes ISO
10646 (nivel 2) hasta dos caracteres de combinación por carácter base
para algunos alfabetos (en particular Tai), pero en general son
preferibles, siempre que estén disponibles, los caracteres
precompuestos (Unicode llama a ésto Normalization Form C).
ÁREA PRIVADA
En el BMP, en el rango de 0xe000 a 0xf8ff ningún carácter será nunca
asignado por el estándar y dicha zona se reserva para uso privado. Para
la comunidad Linux, esta área privada ha sido subdividida aún más en el
rango de 0xe000 a 0xefff que puede ser utilizado a nivel particular por
cualquier usuario final y la zona Linux en el rango de 0xf000 a 0xf8ff
donde las extensiones se coordinan entre todos los usuarios de Linux.
El registro de los caracteres asignados a la zona Linux es mantenido
actualmente por H. Peter Anvin <Peter.Anvin@linux.org>.
LITERATURA
* Information technology — Universal Multiple-Octet Coded Character Set
(UCS) — Part 1: Architecture and Basic Multilingual Plane.
International Standard ISO/IEC 10646-1, International Organization
for Standardization, Geneva, 2000.
Esta es la especificación oficial de UCS. Está disponible en fichero
PDF o CD-ROM en 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/unicode/reports/
* Markus Kuhn: UTF-8 and Unicode FAQ for Unix/Linux.
http://www.cl.cam.ac.uk/~mgk25/unicode.html
Proporciona información de suscripción a la lista de correo linux-
utf8, que es el mejor lugar para buscar consejo sobre el uso de
Unicode en Linux.
* Bruno Haible: Unicode HOWTO.
ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html
FALLOS
Cuando esta página de manual fue revisada por última vez, el soporte de
la biblioteca C de GNU para localizaciones UTF-8 estaba ya maduro y el
soporte de XFree86 estaba en un estado avanzado, pero sin embargo el
desarrollo de aplicaciones (en su mayoría editores) que hicieran un uso
adecuado de localizaciones UTF-8 estaba aún completamente en progreso.
El soporte general actual de UCS bajo Linux normalmente proporciona
caracteres de ancho doble para CJK y algunas veces incluso sencillos
caracteres de combinación impactantes (overstriking), pero normalmente
no incluye soporte para alfabetos en los que se escribe de derecha a
izquierda o con sustitución de ligaduras como el hebreo, el árabe y el
hidú. Estos alfabetos están soportados actualmente sólo por ciertas
aplicaciones gráficas (visores HTML, procesadores de texto) con
sofisticados motores de visualización de texto.
AUTOR
Markus Kuhn <mgk25@cl.cam.ac.uk>
VÉASE TAMBIÉN
utf-8(7), charsets(7), setlocale(3)