ISO/IEC 10646
# ISO/IEC 10646

## Formas de codificar el Conjunto Universal de Caracteres

El ISO 10646 define diversas «formas de codificación» de caracteres para el Conjunto Universal de Caracteres (Universal Character Set). La más simple es la denominada, UCS-2, que emplea un «valor de código» simple (definido como uno o más números representando un punto de código) entre 0 y 65,535 para cada carácter, y permite exactamente dos bytes (una palabra de 16-bit) para representar el valor. El UCS-2 permite por lo tanto una representación binaria de cada punto de código en el sistema BMP, haciendo que haya una correspondencia biunívoca entre el valor y el punto de código que representa al carácter. El UCS-2 no puede representar puntos de código fuera del conjunto BMP.

La primera enmienda a la edición original del UCS se definió como UTF-16, y era una extensión del UCS-2, para representar puntos de código fuera del BMP. En la actualidad existen una zona especial de puntos de código denominada S (Special) en el BMP que permanece sin asignar a caracteres. El UCS-2 no permite emplear valores de código para estos puntos de código, pero UTF-16 permite el empleo de los mismos en pares. Cada par consiste en un "elemento-RC" (una tupla de dos octetos que forman un R-octeto y un C-octeto de una secuencia total de cuatro octetos que se asocia a una celda en el espacio de códigos asignados a caracteres). El estándar Unicode ha adoptado también el UTF-16, pero en la terminología de Unicode, la mitad-alta de la zona de elementos se denomina "sustituciones altas" y la mitad inferior de la tabla se denomina "sustituciones bajas".

Otra codificación es la UCS-4 que emplea un carácter único entre 0 y (teóricamente) en hexadecimal hasta 7FFFFFFF para ser asignado a cada carácter (sin embargo el UCS para a 10FFFF y la ISO/IEC 10646 tiene comprometida asignaciones futuras de caracteres en este rango). El UCS-4 permite representaciones de cada valor mediante el empleo exacto de cuatro bytes (una palabra de 32-bits). El UCS-4 permite una representación binaria de cada punto de código en el sistema UCS, incluyendo aquellos que están fuera del BMP. Como en el sistema de codificación de UCS-2, cada carácter codificado posee una longitud fija en bytes.

## Historia de la ISO 10646

The International Organization for Standardization (ISO) precisó el juego de caracteres en 1989 y publicó un borrador denominado ISO 10646 en 1990. Hugh McGregor Ross fue uno de los principales ideadores y arquitectos de este primer borrador. Aquel estándar difiere bastante del actual. Se definían en el primer borrador 128 grupos de 256 planos y cada uno de ellos de 256 columnas y 256 células, con ello se conseguía colocar aparentemente 2 147 483 648 caracteres, pero en la actualidad el estándar puede colocar sólo 679 477 248 caracteres, como las reglas prohíben valores de caracteres de control (0x00 hasta 0x1F y 0x80 hasta 0x9F, en notación hexadecimal). Por ejemplo la letra A tienen una posición en el grupo 0x20, plano 0x20, columna 0x20, célula 0x41.

Se podían cifrar los caracteres de este estándar primordial de la ISO 10646 en una de tres maneras:

* UCS-4, cuatro octetos para cada carácter, permitiendo la codificación simple de todos los caracteres;
* UCS-2, dos octetos para cada carácter, permitiendo la codificación del primer plano, 0x20, el plano multilingüe básico, conteniendo los primeros 36.864 puntos de código, directo, y otros planos y grupos cambiando a ellos con ISO 2022 secuencias de escape;
* UTF-1, que codifica todos los caracteres en secuencias de octetos de longitud que varía (1 a 5 octetos, que no contienen ningún carácter de control).

En 1990, salieron a la luz dos iniciativas para crear un Conjunto de Caracteres Universal: Unicode, con 16 bits para cada carácter (65.536 caracteres posibles), e ISO 10646. Las compañías de software rechazaron aceptar el requisito de la complejidad y del tamaño del estándar de ISO y lograron convencer a un número de organismos nacionales de la ISO para que votaran contra él. Los estandarizadores de la ISO convinieron que no podrían continuar apoyando el estándar en su estado actual y que negociarían la unificación de su estándar con Unicode. Ocurrieron dos cambios tras esta situación: el abandono de la limitación sobre los caracteres (prohibición de los valores del carácter de control), los caracteres así de permiso hasta 0x0000101F; 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 mismo estándar de Unicode: los 65.536 caracteres empezaron a parecer escasos, y el estándar a partir de la versión 2.0 realizan la codificación de 1.112.064 caracteres por medio de la codificación UTF-16. Por esa razón, la ISO 10646 fue limitada para contener tantos caracteres como podían ser codificados por UTF-16, y no más. Es decir, un poco sobre más de un millón de caracteres en vez sobre de 2000 millones. La codificación UCS-4 de ISO 10646 fue incorporada en el estándar de Unicode con la limitación a la gama UTF-16 y bajo el nombre de UTF-32. En cuanto a UTF-1, nadie lo empleó, debido en parte a su mala codificación del diseño (no existía forma de distinguir entre la funcionalidad de los octetos, un problema similar a la codificiación Shift-JIS del japonés) y su degradación de las prestaciones (muchas operaciones de división). Rob Pike y Ken Thompson, los diseñadores del sistema operativo Plan 9 de Bell Labs, idearon uno nueva, rápida y bien diseñada codificación de ancho-mixto, que se denominó UTF-8.

## Campo de Aplicaciones y Alcance

El Juego Universal de Caracteres en código de múltiples octetos (UCS) es aplicable a la representación, transmisión, intercambio, tratamiento, almacenamiento, introducción y presentación de prácticamente todos los lenguajes del mundo en forma escrita. La parte básica de la norma, de 1993, especifica la arquitectura general de esta codificación de cuatro octetos (32 bits) compendio de numerosos juegos de caracteres de ámbito nacional e internacional. Define los términos utilizados en su redacción, así como la estructura general de UCS. Especifica asimismo en qué consiste el Plano Multilenguaje Básico (BMP), una reducción del código a 2 octetos (16 bits) y especifica el conjunto de símbolos gráficos de que se compone y sus representaciones codificadas. Explica cuáles son las representaciones codificadas de las funciones de control, y la gestión de futuras adiciones a este juego de caracteres.

## Correlación con Unicode

* ISO/IEC 10646-1:1993 ≈ Unicode 1.1
* ISO/IEC 10646-1:2000 ≈ Unicode 3.0
* 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 enmienda 1, enmienda 2, y parte de la enmienda 3 ≈ Unicode 5.0

Véase: §D.1 del The Unicode Standard para más detalles.

## Conexión con otras normas

Los primeros 127 caracteres del Plano Multilenguaje Básico (BMP) utilizado para el código de intercambio de 16-bit se corresponden con ISO 646, la versión internacional de ASCII. Los caracteres que constituyen la segunda mitad de la primera fila son los utilizados por ISO 8859-1, el juego Latin-1. ISO/IEC DIS 14755 -- Métodos de introducción de caracteres del repertorio ISO/IEC 10646 con un teclado u otros dispositivos de entrada. Se prevé que se convierta muy pronto en el código básico de representación de la información de todos los sistemas de 16 y 32 bits.

