El Conjunto Universal de Caracteres Codificados ( UCS , Unicode ) es un conjunto estándar de caracteres definido por la norma internacional ISO / IEC 10646, Tecnología de la información: Conjunto Universal de Caracteres Codificados (UCS) (más enmiendas a dicha norma), que es la base de muchas codificaciones de caracteres , mejorando a medida que se agregan caracteres de sistemas de escritura previamente no representados. [ 1 ]
El UCS dispone de más de 1,1 millones de puntos de código posibles para su uso/asignación, pero solo los primeros 65.536, que corresponden al Plano Multilingüe Básico (BMP), se habían generalizado antes del año 2000. Esta situación comenzó a cambiar cuando la República Popular China (RPC) dictaminó en 2006 que todo el software vendido en su jurisdicción debía ser compatible con GB 18030. Esto obligó al software destinado a la venta en la RPC a ir más allá del BMP. [ 2 ]
El sistema deja deliberadamente muchos puntos de código sin asignar a caracteres, incluso en el BMP. Esto se hace para permitir futuras expansiones o para minimizar conflictos con otras formas de codificación.
La edición original del UCS definió UTF-16 , una extensión de UCS-2, para representar puntos de código fuera del BMP. Un rango de puntos de código en la Zona S (Especial) del BMP permanece sin asignar a caracteres. UCS-2 no permite el uso de valores de código para estos puntos de código, pero UTF-16 permite su uso en pares. Unicode también adoptó UTF-16, pero en la terminología de Unicode, los elementos de la zona de mitad alta se convierten en "sustitutos altos" y los elementos de la zona de mitad baja en "sustitutos bajos".
Otra codificación, UTF-32 (anteriormente denominada UCS-4), utiliza cuatro bytes (un total de 32 bits) para codificar un solo carácter del espacio de códigos. De este modo, UTF-32 permite una representación binaria de cada punto de código (a partir del año 2024) en las API y las aplicaciones de software.
Historia
La Organización Internacional de Normalización (ISO) se propuso crear el conjunto de caracteres universal en 1989 y publicó el borrador de la norma ISO 10646 en 1990. Hugh McGregor Ross fue uno de sus principales artífices.
Este trabajo se realizó independientemente del desarrollo del estándar Unicode , que venía en desarrollo desde 1987 por parte de Xerox y Apple .
El borrador original de la norma ISO 10646 difería notablemente de la norma actual. Definía:
- 128 grupos de
- 256 aviones de
- 256 filas de
- 256 células,
para un total aparente de 2.147.483.648 caracteres, pero en realidad el estándar solo podía codificar 679.477.248 caracteres, ya que la política prohibía los valores de byte de los códigos de control C0 y C1 (0x00 a 0x1F y 0x80 a 0x9F, en notación hexadecimal ) en cualquiera de los cuatro bytes que especifican un grupo, plano, fila y celda. La letra mayúscula latina A, por ejemplo, tenía una ubicación en el grupo 0x20, plano 0x20, fila 0x20, celda 0x41.
Los caracteres de esta norma primordial ISO/IEC 10646 podrían codificarse de tres maneras:
- UCS-4, cuatro bytes por cada carácter, lo que permite la codificación sencilla de todos los caracteres;
- UCS-2, dos bytes por cada carácter, lo que permite la codificación del primer plano, 0x20, el Plano Multilingüe Básico, que contiene los primeros 36.864 puntos de código, directamente, y otros planos y grupos cambiando a ellos con secuencias de escape ISO/IEC 2022 ;
- UTF-1 , que codifica todos los caracteres en secuencias de bytes de longitud variable (de 1 a 5 bytes, cada uno de los cuales no contiene códigos de control).
En 1990, por lo tanto, existían dos iniciativas para un conjunto de caracteres universal: Unicode , con 16 bits por carácter (65.536 caracteres posibles), e ISO/IEC 10646. Las empresas de software se negaron a aceptar la complejidad y el tamaño que exigía el estándar ISO y lograron convencer a varios organismos nacionales de ISO para que votaran en contra. Los responsables de ISO se dieron cuenta de que no podían seguir apoyando el estándar en su estado actual y negociaron su unificación con Unicode. Se produjeron dos cambios: la eliminación de la limitación de caracteres (la prohibición de valores de código de control), lo que permitió la asignación de puntos de código; y la sincronización del repertorio del Plano Multilingüe Básico con el de Unicode.
Mientras tanto, con el paso del tiempo, la situación cambió en el propio estándar Unicode: 65.536 caracteres resultaron insuficientes, y el estándar, a partir de la versión 2.0, admite la codificación de 1.112.064 puntos de código de 17 planos mediante el mecanismo sustituto UTF-16 . Por esta razón, ISO/IEC 10646 se limitó a contener la cantidad de caracteres que podía codificar UTF-16 y no más, es decir, poco más de un millón de caracteres en lugar de más de 679 millones. La codificación UCS-4 de ISO/IEC 10646 se incorporó al estándar Unicode con la limitación al rango UTF-16 y bajo el nombre UTF-32 , aunque prácticamente no tiene utilidad fuera de los datos internos de los programas.
Rob Pike y Ken Thompson , los diseñadores del sistema operativo Plan 9 , idearon una nueva codificación de ancho mixto, rápida y bien diseñada, que también era compatible con versiones anteriores de ASCII de 7 bits , que llegó a llamarse UTF-8 , [ 3 ] y que actualmente es la codificación UCS más popular.
Diferencias con Unicode
ISO/IEC 10646 y Unicode comparten un repertorio y numeración idénticos: los mismos caracteres con los mismos números existen en ambos estándares, aunque Unicode publica nuevas versiones y añade caracteres con mayor frecuencia. Unicode cuenta con reglas y especificaciones que van más allá del alcance de ISO/IEC 10646. ISO/IEC 10646 es un mapa de caracteres sencillo, una extensión de estándares anteriores como ISO/IEC 8859. En cambio, Unicode añade reglas para la intercalación , la normalización de formas y el algoritmo bidireccional para escrituras de derecha a izquierda, como el árabe y el hebreo. Para lograr la interoperabilidad entre plataformas, especialmente si se utilizan escrituras bidireccionales, no basta con ser compatible con ISO/IEC 10646; es necesario implementar Unicode.
Para respaldar estas reglas y algoritmos, Unicode agrega numerosas propiedades a cada carácter del conjunto, como propiedades que determinan la clase bidireccional predeterminada del carácter y propiedades que definen cómo se combina con otros caracteres. Si el carácter representa un valor numérico, como el número europeo '8' o la fracción '¼', dicho valor numérico también se agrega como una propiedad del carácter. Unicode busca que estas propiedades faciliten el manejo interoperable de textos en diversos idiomas.
Algunas aplicaciones admiten caracteres ISO/IEC 10646, pero no son totalmente compatibles con Unicode. Una de ellas, Xterm , puede mostrar correctamente todos los caracteres ISO/IEC 10646 que tienen una correspondencia uno a uno entre caracteres y glifos, y una sola direccionalidad. Puede manejar algunas marcas de combinación mediante métodos de superposición sencillos, pero no puede mostrar hebreo (bidireccional), devanagari (un carácter a varios glifos) ni árabe (ambas características). La mayoría de las aplicaciones con interfaz gráfica de usuario (GUI ) utilizan rutinas estándar de dibujo de texto del sistema operativo que manejan estos sistemas de escritura, aunque las propias aplicaciones no siempre los manejan correctamente.
Citando el conjunto de caracteres codificados universal
La referencia ISO/IEC 10646 , una cita general e informal para la familia de normas ISO/IEC 10646, es aceptable en la mayoría de los textos. Y aunque se trata de una norma independiente, el término Unicode se usa con la misma frecuencia, de forma informal, al hablar del UCS. Sin embargo, cualquier referencia normativa al UCS como publicación debe citar el año de la edición en el formato ISO/IEC 10646:{año} , por ejemplo: ISO/IEC 10646:2014 .
Relación con Unicode
Desde 1991, el Consorcio Unicode y la ISO / IEC han desarrollado conjuntamente el Estándar Unicode ("Unicode") y la norma ISO/IEC 10646. El repertorio, los nombres de los caracteres y los puntos de código de la versión 2.0 de Unicode coinciden exactamente con los de la norma ISO/IEC 10646-1:1993, incluyendo sus primeras siete enmiendas publicadas. Tras la publicación de Unicode 3.0 en febrero de 2000, los caracteres nuevos y actualizados correspondientes se incorporaron al UCS mediante la norma ISO/IEC 10646-1:2000. En 2003, las partes 1 y 2 de la norma ISO/IEC 10646 se combinaron en una sola parte, que desde entonces ha recibido varias enmiendas que han añadido caracteres al estándar en sincronía aproximada con el estándar Unicode.
- ISO/IEC 10646-1:1993 = Unicode 1.1
- ISO/IEC 10646-1:1993 más las enmiendas 5 a 7 = Unicode 2.0
- ISO/IEC 10646-1:1993 más las Enmiendas 5 a 7 = Unicode 2.1 excluyendo el símbolo del euro y el carácter de reemplazo de objeto , que están incluidos en la Enmienda 18.
- ISO/IEC 10646-1:2000 = Unicode 3.0
- ISO/IEC 10646-1:2000 e ISO/IEC 10646-2:2001 = Unicode 3.1
- ISO/IEC 10646-1:2000 más la Enmienda 1 e ISO/IEC 10646-2:2001 = Unicode 3.2
- ISO/IEC 10646:2003 = Unicode 4.0
- ISO/IEC 10646:2003 más la Enmienda 1 = Unicode 4.1
- ISO/IEC 10646:2003 más las Enmiendas 1 a 2 = Unicode 5.0 excluyendo las letras devanagari GGA, JJA, DDDA y BBA, que están incluidas en la Enmienda 3.
- ISO/IEC 10646:2003 más las enmiendas 1 a 4 = Unicode 5.1
- ISO/IEC 10646:2003 más las enmiendas 1 a 6 = Unicode 5.2
- ISO/IEC 10646:2003 más las enmiendas 1 a 8 = ISO/IEC 10646:2011 = Unicode 6.0 sin incluir el símbolo de la rupia india
- ISO/IEC 10646:2012 = Unicode 6.1
- ISO/IEC 10646:2012 = Unicode 6.2 excluyendo el símbolo de la lira turca , que está incluido en la Enmienda 1.
- ISO/IEC 10646:2012 = Unicode 6.3 excluyendo el símbolo de la lira turca, que se incluye en la Enmienda 1, y cinco caracteres de control bidireccionales (marca de letra árabe, aislado de izquierda a derecha, aislado de derecha a izquierda, primer aislado fuerte, aislado direccional pop), que se incluyen en la Enmienda 2.
- ISO/IEC 10646:2012 más las enmiendas 1 y 2 = Unicode 7.0, excluyendo el símbolo del rublo.
- ISO/IEC 10646:2014 más la Enmienda 1 = Unicode 8.0 excluyendo el signo Lari , nueve ideogramas unificados CJK y 41 caracteres emoji.
- ISO/IEC 10646:2014 más las enmiendas 1 y 2 = Unicode 9.0 excluyendo Adlam , Newa , símbolos de televisión japoneses y 74 emojis y símbolos.
- ISO/IEC 10646:2017 = Unicode 10.0 excluyendo 285 caracteres de Hentaigana , 3 caracteres de Zanabazar Square y 56 símbolos emoji.
- ISO/IEC 10646:2017 más la Enmienda 1 = Unicode 11.0 excluyendo 46 letras mayúsculas georgianas Mtavruli , 5 ideogramas unificados CJK y 66 caracteres emoji.
- ISO/IEC 10646:2017 más las enmiendas 1 y 2 = Unicode 12.0 excluyendo 62 caracteres adicionales
- ISO/IEC 10646:2020 = Unicode 13.0
- ISO/IEC 10646:2020 más la Enmienda 1 = Unicode 15.0
- ISO/IEC 10646:2020 más las enmiendas 1 y 2 = Unicode 16.0
Véase también
- Normas relacionadas:
- ISO/IEC 646 (las posiciones 0 a 127 son las mismas que en ISO/IEC 10646 y Unicode, y los números 646 y 10646 son similares)
- ISO/IEC 2022 Tecnología de la información: Estructura de códigos de caracteres y técnicas de extensión.
- Códigos de control ISO/IEC 6429 C0 y C1
- ISO/IEC 8859 (las posiciones 0 a 255 de UCS y Unicode son las mismas que en ISO/IEC 8859-1, también conocido como ISO Latin 1)
- ISO/IEC 14651 Tecnología de la información – Ordenación y comparación internacional de cadenas
- Códigos ISO 15924 para la representación de nombres de escrituras (cada carácter está asociado a una de esas escrituras).
- Comparación de codificaciones Unicode
- Lista de referencias a entidades de caracteres XML y HTML
- Lista de fuentes Unicode
- Personajes del conjunto de caracteres universal
- ISO/IEC JTC 1/SC 2
Referencias
- ↑ Borrador, Comité Final (2010). Norma Internacional ISO/IEC ISO/IEC 10646 (PDF) (2.ª ed.). Suiza. pág. 8.
{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) - ↑ "Conjunto de caracteres universal - Acemap" . ddescholar.acemap.info . Consultado el 9 de junio de 2025 .
- ↑ Pike, Rob (3 de abril de 2003). "Historia de UTF-8" . Archivado del original el 23 de mayo de 2016.
Enlaces externos
- Normas disponibles públicamente (ISO) : incluye una copia de ISO/IEC 10646:2020/Amd. 1:2023(E).
- ISO/IEC JTC1/SC2/WG2 , el grupo de trabajo encargado de la norma ISO 10646.
- Preguntas frecuentes sobre UTF-8 y Unicode
- Fuentes, editores y documentación gratuitos de SIL
- Ejemplo sencillo pero agradable de UTF-8 para poner a prueba las capacidades de tu navegador web y de las fuentes.
- Problemas con el conjunto de caracteres para ADA 9x de octubre de 1989, se ofrece información detallada sobre el DIS ISO-10646 original, anterior a la fusión.
- Unicode
- Conjuntos de caracteres