El conjunto de caracteres codificados universales ( UCS , Unicode ) es un conjunto estándar de caracteres definidos 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.
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:
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:
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 sustitución 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.
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 sobrescritura, 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.
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 .
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.
Normas relacionadas: