De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

El juego de caracteres codificados universal ( UCS , Unicode ) es un juego estándar de caracteres definido por el estándar internacional ISO / IEC  10646 , Tecnología de la información - Juego de caracteres codificados universal (UCS) (más enmiendas a ese estándar), que es la base de muchos codificaciones de caracteres , mejorando a medida que se agregan caracteres de sistemas de escritura previamente no representados.

El UCS tiene más de 1,1 millones de puntos de código posibles disponibles para su uso / asignación, pero solo los primeros 65,536, que es 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 de China ( PRC) dictaminó en 2006 que todo el software vendido en su jurisdicción tendría que ser compatible con GB 18030 . Este software requerido destinado a la venta en la República Popular China para ir más allá del BMP.

El sistema deja deliberadamente muchos puntos de código no asignados a caracteres, incluso en el BMP. Hace esto para permitir una expansión futura o para minimizar los conflictos con otras formas de codificación.

Codificación de formularios [ editar ]

ISO / CEI 10646 define varias formas de codificación de caracteres para el juego de caracteres codificados universales. El más simple, UCS-2, [Nota 1] utiliza un solo valor de código (definido como un número, de los cuales uno o más representa un punto de código en general, pero para UCS-2 es estrictamente un valor de código que representa un punto de código ) entre 0 y 65 535 para cada carácter, y permite exactamente dos bytes (una palabra de 16 bits ) para representar ese valor. UCS-2 permite por tanto una representación binaria de cada punto de código en el BMP que representa un carácter. UCS-2 no puede representar puntos de código fuera del BMP.

La primera enmienda a la edición original de 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 los 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 alta se convierten en "sustitutos altos" y los elementos de la zona de la mitad baja se convierten en "sustitutos bajos". [ aclaración necesaria ]

Otra codificación, UCS-4 , utiliza cuatro bytes (32 bits en total) para codificar un solo carácter del espacio de código . Aunque Unicode restringe el espacio de código a un límite superior de 10FFFF. El estándar ISO / IEC 10646 ha establecido que todas las asignaciones futuras de caracteres se llevarán a cabo en los rangos hasta 0x7FFFFFFF hex ). [ cita requerida ] UCS-4 permite la representación de cada valor como exactamente cuatro bytes (una palabra de 32 bits). UCS-4 permite por tanto una representación binaria de cada punto de código en el UCS, incluidos los que están fuera del BMP. Como en UCS-2, cada carácter codificado tiene una longitud fija en bytes, lo que facilita su manipulación, pero por supuesto requiere el doble de almacenamiento que UCS-2.

Actualmente, la codificación UCS dominante es UTF-8 , que es una codificación de ancho variable diseñada para compatibilidad con versiones anteriores de ASCII y para evitar las complicaciones de endianidad y marcas de orden de bytes en UTF-16 y UTF-32 . Más del 93% [1] de todas las páginas web están codificadas en UTF-8. El Grupo de trabajo de ingeniería de Internet (IETF) requiere todos los protocolos de Internet para identificar la codificación utilizada para los datos de caracteres, y las codificaciones de caracteres admitidas deben incluir UTF-8. El Consorcio de correo de Internet (IMC) recomienda que todos los programas de correo electrónico puedan mostrar y crear correo utilizando UTF-8. También se utiliza cada vez más como codificación de caracteres predeterminada en sistemas operativos, lenguajes de programación, API y aplicaciones de software.

Consulte también Comparación de codificaciones Unicode .

Historia [ editar ]

La Organización Internacional de Normalización (ISO) se propuso componer el conjunto de caracteres universal en 1989 y publicó el borrador de ISO 10646 en 1990. Hugh McGregor Ross fue uno de sus principales arquitectos. Ese estándar difería notablemente del actual. Definió:

  • 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 solo podía codificar 679,477,248 caracteres, ya que la política prohibía valores de bytes 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 especificando 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.

Se podrían codificar los caracteres de este primordial estándar ISO 10646 de una de estas tres formas:

  1. UCS-4, cuatro bytes por cada carácter, lo que permite la codificación simple de todos los caracteres;
  2. 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 2022 ;
  3. 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 10646. Las empresas de software se negaron a aceptar el requisito de complejidad y tamaño del estándar ISO y pudieron para convencer a varios organismos nacionales de ISO de que voten en contra. [ cita requerida ]Los normalizadores 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 como 0x0000101F para 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 llegaron a parecer insuficientes, y el estándar 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 sustituto UTF-16. . Por esa razón, ISO 10646 se limitó a contener tantos caracteres como pudiera codificar UTF-16 y no más, es decir, un poco más de un millón de caracteres en lugar de más de 679 millones. La codificación UCS-4 de ISO 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 uso fuera de los datos internos de los programas.

Rob Pike y Ken Thompson , los diseñadores del sistema operativo Plan 9 , idearon una codificación de ancho mixto nueva, rápida y bien diseñada, que llegó a llamarse UTF-8 , [2] actualmente la codificación UCS más popular.

Diferencias con Unicode [ editar ]

ISO 10646 y Unicode tienen un repertorio y números idénticos ; los mismos caracteres con los mismos números existen en ambos estándares, aunque Unicode lanza nuevas versiones y agrega nuevos caracteres con más frecuencia. Unicode tiene reglas y especificaciones fuera del alcance de ISO 10646. ISO 10646 es un mapa de caracteres simple, una extensión de estándares anteriores como ISO 8859 . Por el contrario, Unicode agrega reglas para la clasificación , normalización de formularios y el algoritmo bidireccional para escrituras de derecha a izquierda como árabe y hebreo. Para la interoperabilidad entre plataformas, especialmente si se utilizan scripts bidireccionales, no es suficiente admitir ISO 10646; Se debe implementar Unicode.

Para admitir estas reglas y algoritmos, Unicode agrega muchas propiedades a cada carácter en el conjunto, como propiedades que determinan la clase bidireccional predeterminada de un personaje y propiedades para determinar cómo se combina el personaje con otros personajes. 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 admitan el manejo de texto interoperable con una mezcla de idiomas.

Algunas aplicaciones admiten caracteres ISO 10646 pero no son totalmente compatibles con Unicode. Una de estas aplicaciones, Xterm , puede mostrar correctamente todos los caracteres ISO 10646 que tienen un mapeo uno a uno de carácter a glifo [ aclaración necesaria ] y una sola direccionalidad. Puede manejar algunas marcas de combinación mediante métodos simples de superposición, 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 del sistema operativo estándar que manejan dichos scripts, aunque las aplicaciones en sí mismas todavía no siempre los manejan correctamente.

Citando el conjunto de caracteres codificados universales [ editar ]

ISO 10646 , una cita general e informal para la familia de normas ISO / IEC 10646, es aceptable en la mayor parte de la prosa. Y aunque es un estándar separado, el término Unicode se usa con la misma frecuencia, de manera informal, cuando se habla de 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 [ editar ]

Desde 1991, el Unicode Consortium y la ISO han desarrollado el estándar Unicode ("Unicode") e ISO / IEC 10646 en conjunto. El repertorio, los nombres de los caracteres y los puntos de código de Unicode Versión 2.0 coinciden exactamente con los de ISO / IEC 10646-1: 1993 con sus primeras siete enmiendas publicadas. Después de que se publicó Unicode 3.0 en febrero de 2000, los caracteres nuevos y actualizados correspondientes ingresaron al UCS a través de ISO / IEC 10646-1: 2000. En 2003, las partes 1 y 2 de ISO / IEC 10646 se combinaron en una sola parte, que desde entonces ha tenido una serie de enmiendas que agregan 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 enmiendas 5 a 7 = Unicode 2.0
  • ISO / IEC 10646-1: 1993 más enmiendas 5 a 7 = Unicode 2.1 excluyendo el signo del euro y el carácter de reemplazo de objeto , que se incluyen 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 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 se incluyen en la enmienda 3
  • ISO / IEC 10646: 2003 más enmiendas 1 a 4 = Unicode 5.1
  • ISO / IEC 10646: 2003 más enmiendas 1 a 6 = Unicode 5.2
  • ISO / IEC 10646: 2003 más enmiendas 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 signo de la lira turca , que se incluye en la Enmienda 1
  • ISO / IEC 10646: 2012 = Unicode 6.3 excluyendo el signo de la lira turca , que se incluye 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, pop Aislamiento direccional), que se incluyen en la Enmienda 2
  • ISO / IEC 10646: 2012 más enmiendas 1 y 2 = Unicode 7.0 excluyendo el signo del rublo
  • ISO / IEC 10646: 2014 más Enmienda 1 = Unicode 8.0 excluyendo el signo Lari , nueve ideogramas unificados CJK y 41 caracteres emoji
  • ISO / IEC 10646: 2014 más enmiendas 1 y 2 = Unicode 9.0 excluyendo Adlam, Newa, símbolos de TV japoneses y 74 emoji 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 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

Ver también [ editar ]

  • Normas ISO relacionadas :
    • ISO 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 2022 : estructura de códigos de caracteres y técnicas de extensión
    • Códigos de control ISO 6429 C0 y C1
    • ISO 8859 (las posiciones 0 a 255 de UCS y Unicode son las mismas que en ISO-8859-1, alias ISO Latin 1)
    • ISO / IEC 14651 Tecnología de la información: comparación y pedido internacional de cadenas
    • Códigos ISO 15924 para la representación de nombres de escrituras (cada carácter está asociado con 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 juego de caracteres universal
  • ISO / IEC JTC 1 / SC 2

Notas [ editar ]

  1. ^ Consulte UTF-16 para una discusión más detallada de UCS-2.

Referencias [ editar ]

  1. ^ "Encuesta de uso de codificaciones de caracteres desglosadas por clasificación" . w3techs.com . Consultado el 1 de abril de 2019 .
  2. Pike, Rob (3 de abril de 2003). "Historia UTF-8" . Archivado desde el original el 23 de mayo de 2016.

Enlaces externos [ editar ]

  • Estándares disponibles al público (ISO): incluye una copia de ISO 10646: 2014 (archivo ZIP de 129 MB, publicado el 01-09-2014) e inserciones electrónicas (archivo ZIP de 1.7 MB)
  • ISO / IEC JTC1 / SC2 / WG2 , el grupo de trabajo a cargo de ISO 10646
  • Preguntas frecuentes sobre UTF-8 y Unicode
  • Fuentes, editores y documentación de software gratuito de SIL
  • Ejemplo de UTF-8 simple pero agradable que prueba su navegador web y las capacidades de fuente.
  • Problemas con el juego de caracteres para ADA 9x de octubre de 1989, entra en algunos detalles sobre el DIS ISO-10646 original anterior a la fusión