El conjunto de caracteres codificados universales ( UCS , Unicode ) es un conjunto estándar de caracteres definido por la norma internacional ISO / IEC 10646, Tecnología de la información — Conjunto de caracteres codificados universales (UCS) (más modificaciones a esa norma), que es la base de muchas codificaciones de caracteres , mejorando a medida que se añaden caracteres de sistemas de escritura no representados anteriormente.
El UCS tiene más de 1,1 millones de puntos de código posibles disponibles para su uso o asignación, pero solo los primeros 65.536, que constituyen el Plano Multilingüe Básico (BMP), habían entrado en uso común antes de 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 tendría que ser compatible con GB 18030. Esto requería que el software destinado a la venta en la RPC fuera más allá del BMP. [ aclaración necesaria ]
El sistema deja deliberadamente muchos puntos de código sin asignar a caracteres, incluso en el BMP, para permitir una expansión futura o minimizar los 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 Unicode, los elementos de la zona de la mitad superior se convierten en "sustitutos altos" y los elementos de la zona de la mitad inferior se convierten en "sustitutos bajos". [ aclaración necesaria ]
Otra codificación, UTF-32 (anteriormente denominada UCS-4), utiliza cuatro bytes (32 bits en total) para codificar un único carácter del espacio de código. 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 componer 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 arquitectos.
Este trabajo se realizó independientemente del desarrollo del estándar Unicode , que estaba en desarrollo desde 1987 por Xerox y Apple .
El borrador original de la norma ISO 10646 difería notablemente de la norma actual. Definía:
- 128 grupos de
- 256 planos de
- 256 filas de
- 256 celdas,
para un total aparente de 2.147.483.648 caracteres, pero en realidad el estándar sólo podía codificar 679.477.248 caracteres, ya que la política prohibía valores de byte de 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 se podrían codificar de una de tres maneras:
- UCS-4, cuatro bytes por cada carácter, lo que permite la codificación simple 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, de forma directa, 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 para cada carácter (65.536 caracteres posibles), e ISO/IEC 10646. Las empresas de software se negaron a aceptar el requisito de complejidad y tamaño del estándar ISO y pudieron convencer a una serie de organismos nacionales de ISO para que votaran en contra. [ cita requerida ] Los funcionarios de ISO se dieron cuenta de que no podían seguir apoyando el estándar en su estado actual y negociaron la unificación de su estándar con Unicode. Se produjeron dos cambios: el levantamiento de la limitación de caracteres (prohibición de valores de código de control), abriendo así puntos de código para la asignación; 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 pasaron a parecer insuficientes, y el estándar a partir de la versión 2.0 en adelante admite la codificación de 1.112.064 puntos de código de 17 planos mediante el mecanismo de sucedáneo UTF-16 . Por ese motivo, la ISO/IEC 10646 se limitó a contener tantos caracteres como pudieran ser codificados por UTF-16 y no más, es decir, un poco más de un millón de caracteres en lugar de los más de 679 millones. La codificación UCS-4 de la ISO/IEC 10646 se incorporó al estándar Unicode con la limitación al rango UTF-16 y bajo el nombre UTF-32 , aunque casi 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 pasó a llamarse UTF-8 , [1] y actualmente es la codificación UCS más popular.
Diferencias con Unicode
ISO/IEC 10646 y Unicode tienen un repertorio y números idénticos: existen los mismos caracteres con los mismos números en ambos estándares, aunque Unicode lanza nuevas versiones y agrega nuevos caracteres con mayor frecuencia. Unicode tiene reglas y especificaciones fuera del alcance de ISO/IEC 10646. ISO/IEC 10646 es un mapa de caracteres simple, una extensión de estándares anteriores como ISO/IEC 8859. Por el contrario, Unicode agrega 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 la interoperabilidad entre plataformas, especialmente si se utilizan escrituras bidireccionales, no es suficiente soportar ISO/IEC 10646; Unicode debe implementarse.
Para respaldar estas reglas y algoritmos, Unicode agrega muchas propiedades a cada carácter del conjunto, como propiedades que determinan la clase bidireccional predeterminada de un carácter y propiedades que determinan cómo se combina el carácter con otros caracteres. Si el carácter representa un valor numérico, como el número europeo "8" o la fracción vulgar "¼", ese valor numérico también se agrega como una propiedad del carácter. Unicode pretende que estas propiedades respalden el manejo de texto interoperable con una mezcla de idiomas.
Algunas aplicaciones admiten caracteres ISO/IEC 10646 pero no son totalmente compatibles con Unicode. Una de estas aplicaciones, Xterm , puede mostrar correctamente todos los caracteres ISO/IEC 10646 que tienen una asignación de carácter a glifo uno a uno [ aclaración necesaria ] y una única direccionalidad. Puede manejar algunas marcas de combinación mediante métodos simples de tachado, pero no puede mostrar hebreo (bidireccional), devanagari (un carácter para muchos glifos) o árabe (ambas características). La mayoría de las aplicaciones GUI utilizan rutinas de dibujo de texto estándar del sistema operativo que manejan tales scripts, aunque las propias aplicaciones aún no siempre los manejan correctamente.
Citando el conjunto de caracteres codificados universales
La norma ISO/IEC 10646 , una cita informal y general de la familia de normas ISO/IEC 10646, es aceptable en la mayor parte de los textos. Y aunque se trata de una norma independiente, el término Unicode se utiliza con la misma frecuencia, de manera informal, cuando se habla de la UCS. Sin embargo, cualquier referencia normativa a la UCS como publicación debe citar el año de la edición en la forma 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 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 ISO/IEC 10646-1:1993 con sus primeras siete modificaciones publicadas. Después de que se publicara Unicode 3.0 en febrero de 2000, los caracteres nuevos y actualizados correspondientes entraron en el UCS a través de la ISO/IEC 10646-1:2000. En 2003, las partes 1 y 2 de la ISO/IEC 10646 se combinaron en una única parte, que desde entonces ha tenido una serie de modificaciones que han añadido caracteres a la norma en sincronía aproximada con la norma Unicode.
- ISO/IEC 10646-1:1993 = Unicode 1.1
- ISO/IEC 10646-1:1993 más las modificaciones 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 objetos , 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 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 modificaciones 1 a 4 = Unicode 5.1
- ISO/IEC 10646:2003 más las modificaciones 1 a 6 = Unicode 5.2
- ISO/IEC 10646:2003 más las modificaciones 1 a 8 = ISO/IEC 10646:2011 = Unicode 6.0 excluyendo el signo 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 está incluido en la Enmienda 1, y cinco caracteres de control bidireccionales (marca de letra árabe, aislamiento de izquierda a derecha, aislamiento de derecha a izquierda, primer aislamiento fuerte, aislamiento direccional pop), que están incluidos en la Enmienda 2
- ISO/IEC 10646:2012 más las modificaciones 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 Hentaigana , 3 caracteres 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 enmiendas 1 y 2 = Unicode 12.0 excluyendo 62 caracteres adicionales
- ISO/IEC 10646:2020 = Unicode 13.0
- ISO/IEC 10646:2020 más enmiendas 1 = Unicode 15.0
- ISO/IEC 10646:2020 más 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)
- Tecnología de la información ISO/IEC 2022 : Estructura del código de caracteres y técnicas de extensión
- Códigos de control C0 y C1 según ISO/IEC 6429
- ISO/IEC 8859 (las posiciones 0 a 255 de UCS y Unicode son las mismas que en ISO/IEC 8859-1, también conocida como ISO Latin 1)
- ISO/IEC 14651 Tecnología de la información: comparación y ordenación de cadenas internacionales
- 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 de entidades de caracteres XML y HTML
- Lista de fuentes Unicode
- Personajes del conjunto de caracteres universales
- ISO/IEC JTC 1/SC 2
Referencias
- ^ Pike, Rob (3 de abril de 2003). «Historia de UTF-8». Archivado desde el 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 a cargo de la norma ISO 10646
- Preguntas frecuentes sobre UTF-8 y Unicode
- Fuentes, editores y documentación gratuitos de SIL
- Ejemplo de UTF-8 simple pero agradable que prueba su navegador web y las capacidades de fuentes.
- Problemas con el conjunto de caracteres para ADA 9x a partir de octubre de 1989, brinda algunos detalles sobre el DIS ISO-10646 original, anterior a la fusión