Provided by: manpages-es_1.55-10_all bug

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  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á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)