Provided by:
manpages-es_1.55-10_all 
NOMBRE
Unicode - el Conjunto de Caracteres Universal
DESCRIPCI'ON
El estandar internacional ISO 10646 define el conjunto de caracteres
UCS (Universal Character Set - Conjunto de Caracteres Universal). UCS
contiene todos los caracteres de todos los demas estandares de
conjuntos de caracteres. Tambien garantiza una compatibilidad de ida y
vuelta (round-trip), es decir, se pueden construir tablas de conversion
de tal forma que no se pierda ninguna informacion cuando una cadena se
convierta desde cualquier otra codificacion a UCS y viceversa.
UCS contiene los caracteres necesarios para representar practicamente
todos los lenguajes conocidos. Esto incluye no solo los alfabetos
latino, griego, cirilico, arabe, armenio y georgiano sino tambien
chino, japones y la variante Han de los ideogramas coreanos ademas 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 aun no cubiertos, todavia se esta investigando como
codificarlos de la mejor manera posible para su uso en computadores y
finalmente se anadiran. Al final, esto podria incluir no solo
jeroglificos y varios lenguajes indo-europeos historicos sino incluso
algunos alfabetos artisticos seleccionados como Tengwar, Cirth y
Klingon. UCS abarca tambien un gran numero de simbolos graficos,
tipograficos, matematicos y cientificos, que incluyen aquellos
provistos por TeX, Postscript, APL, MS-DOS, MS-Windows, Macintosh,
fuentes OCR, asi como varios sistemas de procesamiento de texto y
publicacion, sin incluir los que se anaden cada dia.
El estandar 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 caracter. La primera parte del estandar (ISO
10646-1) define las primeras 65534 posiciones de los codigos (0x0000 a
0xfffd), que forman el BMP (Basic Multilingual Plane - Plano
Multiling"ue B'asico), que es el plano 0 en el grupo 0. La segunda parte
del estandar (ISO 10646-2) anade caracteres al grupo 0 fuera del BMP en
varios planos adicionales en el rango de 0x10000 a 0x10ffff. No hay
intenciones de anadir caracteres al estandar mas alla de 0x10ffff, por
consiguiente, de todo el espacio de codigos, solamente una pequena
fraccion del grupo 0 sera 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
anadidos por ISO 10646-2 abarcan solo mas caracteres exoticos para
necesidades cientificas especiales, impresion de diccionarios,
industria de la publicacion, protocolos de mas alto nivel y necesidades
entusiastas.
La representacion de cada caracter UCS como una palabra de 2 bytes es
referida como la forma UCS-2 (solo para caracteres BMP), mientras que
UCS-4 es la representacion de cada caracter como una palabra de 4
bytes. Ademas, existen dos formas de codificacion, UTF-8 por
compatibilidad hacia atras con software que maneje ASCII y UTF-16 por
compatibilidad hacia atras con software UCS-2 que maneje caracteres
fuera del BMP por debajo de 0x10ffff.
Los caracteres UCS del 0x0000 al 0x007f son identicos a los del clasico
conjunto de caracteres US-ASCII y los caracteres en el rango de 0x0000
a 0x00ff son identicos a los del conjunto de caracteres ISO 8859-1
Latin-1.
CARACTERES DE COMBINACI'ON
Algunos codigos en UCS han sido asignados como caracteres de
combinaci'on. Estos son similares a las teclas de acento en una maquina
de escribir. Un caracter de combinacion solo anade un acento al
caracter previo. Los caracteres acentuados mas importantes tienen
codigos propios en UCS, sin embargo, el mecanismo de combinacion de
caracteres permite anadir acentos y otras marcas diacriticas a
cualquier caracter. Los caracteres de combinacion siempre siguen al
caracter al cual modifican. Por ejemplo, en aleman el caracter Umlaut-A
("A mayuscula con dieresis") puede representarse por el ya compuesto
codigo UCS 0x00c4, o alternativamente como la combinacion de una "A
mayuscula" normal seguida por una "dieresis de combinacion": 0x0041
0x0308.
Los caracteres de combinacion son esenciales para, por ejemplo,
codificar el alfabeto Tai o para tipografia matematica y para usuarios
del Alfabeto Fonetico Internacional.
NIVELES DE IMPLEMENTACI'ON
Puesto que no se espera que todos los sistemas soporten mecanismos
avanzados tales como los caracteres de combinacion, el ISO 10646-1
especifica los siguientes tres grados de implementacion del UCS:
Nivel 1 Los caracteres de combinacion y caracteres Hangul Jamo (una
codificacion especial del coreano, en la que un glifo (glyph)
de una silaba Hangul se codifica como una terna o un par de
codigos de vocal/consonante) no estan implementados.
Nivel 2 Ademas de los del nivel 1, se permiten caracteres de
combinacion para algunos idiomas donde resultan esenciales
(p.ej., Tai, Lao, hebreo, arabe, Devangari, Malayalam, etc.).
Nivel 3 Todos los caracteres de UCS estan soportados.
El estandar Unicode 3.0 publicado por el Consorcio Unicode contiene
exactamente el Plano Multiling"ue B'asico UCS implementado al nivel 3,
segun se describe en ISO 10646:2000. Unicode 3.1 anade los planos
adicionales de ISO 10646-2. El estandar Unicode y los informes tecnicos
publicados por el Consorcio Unicode proporcionan mucha informacion
adicional sobre la semantica 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 codigos UCS (en todas las localizaciones), una convencion que es
notificada por la biblioteca C de GNU a las aplicaciones definiendo la
constante __STDC_ISO_10646__ tal como se especifica en el estandar ISO
C 99.
El estandar UCS/Unicode puede ser utilizado exactamente igual que el
ASCII en flujos de entrada/salida, comunicacion con la terminal,
ficheros en texto plano, nombres de fichero y variables de entorno en
la codificacion multibyte UTF-8 compatible con ASCII. Para indicar el
uso de UTF-8 como codificacion de caracteres a todas las aplicaciones,
debe seleccionarse una localizaci'on adecuada a traves de las variables
de entorno (p.ej., "LANG=en_GB.UTF-8").
La funcion nl_langinfo(CODESET) devuelve el nombre de la codificacion
escogida. Pueden utilizarse funciones de biblioteca tales como
wctomb(3) y mbsrtowcs(3) para convertir los caracteres y cadenas
internas wchar_t a la codificacion de caracteres del sistema y
viceversa, y la funcion wcwidth(3) para averiguar cuantas posiciones
(0-2) avanzo el cursor al escribir un caracter.
En Linux, por el momento solo se debe usar el BMP de nivel 1. Tambien
estan soportados por algunos emuladores de terminal UTF-8 y fuentes ISO
10646 (nivel 2) hasta dos caracteres de combinacion por caracter base
para algunos alfabetos (en particular Tai), pero en general son
preferibles, siempre que esten disponibles, los caracteres
precompuestos (Unicode llama a esto Normalization Form C).
'AREA PRIVADA
En el BMP, en el rango de 0xe000 a 0xf8ff ningun caracter sera nunca
asignado por el estandar y dicha zona se reserva para uso privado. Para
la comunidad Linux, esta area privada ha sido subdividida aun mas 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 especificacion oficial de UCS. Esta 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 programacion C. La cuarta
edicion abarca la Enmienda 1 de 1994 al estandar ISO C 90, que anade
un gran numero de nuevas funciones a la biblioteca de C para manejar
codificaciones de caracteres anchos y multibyte, pero que aun no
cubre el estandar ISO C 99, que mejoro el soporte para caracteres
anchos y multibyte aun mas.
* 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 informacion de suscripcion 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 pagina de manual fue revisada por ultima 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 mayoria editores) que hicieran un uso
adecuado de localizaciones UTF-8 estaba aun 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 combinacion impactantes (overstriking), pero normalmente
no incluye soporte para alfabetos en los que se escribe de derecha a
izquierda o con sustitucion de ligaduras como el hebreo, el arabe y el
hidu. Estos alfabetos estan soportados actualmente solo por ciertas
aplicaciones graficas (visores HTML, procesadores de texto) con
sofisticados motores de visualizacion de texto.
AUTOR
Markus Kuhn <mgk25@cl.cam.ac.uk>
V'EASE TAMBI'EN
utf-8(7), charsets(7), setlocale(3)