UTF-7, UTF-8, UTF-16 y UTF-32 son simplemente formatos de transformación algorítmica de la misma codificación (puntos de código) de caracteres. Son codificaciones de un sistema de codificación de caracteres.
También son algorítmicamente más fáciles de navegar hacia adelante y hacia atrás que la mayoría de los esquemas anteriores para tratar con juegos de caracteres de más de 256 caracteres.
Esto es muy diferente a la codificación general de glifos por país y a veces por proveedor. Solo en japonés, hubo un montón de variaciones de JIS solo, sin mencionar EUC-JP y la transformación de JIS orientada a la página de códigos que las máquinas DOS / Windows usaban llamada Shift-JIS. (Hasta cierto punto, hubo transformaciones algorítmicas de estos, pero no fueron particularmente simples y hubo diferencias específicas de proveedor en los caracteres que estaban disponibles. Multiplique esto por un par de cientos de países y la evolución gradual de sistemas de fuentes más sofisticados (pantalla verde posterior era), y tuviste una verdadera pesadilla.
¿Por qué necesitarías estas formas de transformación de Unicode? Debido a que muchos sistemas heredados asumieron secuencias de caracteres de 7 bits de rango ASCII, por lo que necesitaba una solución limpia de 7 bits que pasara datos de forma segura a través de esos sistemas, por lo que necesitaba UTF-7. Luego, había sistemas más modernos que podían manejar conjuntos de caracteres de 8 bits, pero los nulos generalmente tenían significados especiales para ellos, por lo que UTF-16 no funcionaba para ellos. 2 bytes podrían codificar todo el plano multilingüe básico de Unicode en su primera encarnación, por lo que UCS-2 parecía un enfoque razonable para los sistemas que iban a ser "conscientes de Unicode desde cero" (como Windows NT y Java VM); entonces las extensiones más allá de eso requerían caracteres adicionales, lo que resultó en la transformación algorítmica de las codificaciones de 21 bits que estaban reservadas por el estándar Unicode, y nacieron pares sustitutos; eso requirió UTF-16. Si tenía alguna aplicación donde la consistencia del ancho de los caracteres era más importante que la eficiencia del almacenamiento, UTF-32 (una vez llamado UCS-4) era una opción.
UTF-16 es lo único que es remotamente complejo de manejar, y eso se mitiga fácilmente por el pequeño rango de caracteres que se ven afectados por esta transformación y el hecho de que las secuencias principales de 16 bits están perfectamente en un rango totalmente distinto del final Secuencias de 16 bits. También es mucho más fácil que tratar de avanzar y retroceder en muchas codificaciones de Asia oriental, donde necesitabas una máquina de estado (JIS y EUC) para lidiar con las secuencias de escape, o potencialmente retroceder varios personajes hasta que encontraras algo garantizado. ser solo un byte inicial (Shift-JIS). UTF-16 también tenía algunas ventajas en los sistemas que podían atravesar secuencias de 16 bits de manera eficiente.
A menos que tenga que vivir a través de docenas (cientos, en realidad) de diferentes codificaciones, o haya tenido que construir sistemas que admitan múltiples idiomas en diferentes codificaciones, a veces incluso en el mismo documento (como WorldScript en las versiones anteriores de MacOs), podría pensar de los formatos de transformación unicode como complejidad innecesaria. Pero es una reducción dramática en la complejidad sobre las alternativas anteriores, y cada formato resuelve una restricción técnica real. También son realmente eficientemente convertibles entre sí, no requieren tablas de búsqueda complejas.