UTF-7, UTF-8, UTF-16 e UTF-32 são simplesmente formatos de transformação algorítmica da mesma codificação (pontos de código) de caracteres. São codificações de um sistema de codificação de caracteres.
Eles também são algoritmicamente mais fáceis de navegar para frente e para trás do que a maioria dos esquemas anteriores para lidar com conjuntos de caracteres maiores que 256 caracteres.
Isso é muito diferente da codificação de glifos geralmente específica para o país e, às vezes, para o fornecedor. Somente no japonês, havia uma tonelada de variações do JIS sozinho, sem mencionar o EUC-JP e a transformação do JIS orientada por página de código que as máquinas DOS / Windows usavam chamada Shift-JIS. (Até certo ponto, houve transformações algorítmicas delas, mas elas não eram particularmente simples e havia diferenças específicas de fornecedor em caracteres que estavam disponíveis. Multiplique isso por algumas centenas de países e a evolução gradual de sistemas de fontes mais sofisticados (post greenscreen era) e você teve um pesadelo real.
Por que você precisaria dessas formas de transformação do Unicode? Como muitos sistemas legados assumiram sequências de caracteres de 7 bits do intervalo ASCII, você precisou de uma solução limpa de 7 bits que passasse com segurança os dados não corrompidos por esses sistemas; portanto, precisava de UTF-7. Depois, havia sistemas mais modernos que podiam lidar com conjuntos de caracteres de 8 bits, mas os nulos geralmente tinham significados especiais para eles, portanto o UTF-16 não funcionava para eles. 2 bytes poderiam codificar todo o plano multilíngue básico do Unicode em sua primeira encarnação, de modo que o UCS-2 parecia uma abordagem razoável para sistemas que seriam "sensíveis ao Unicode desde o início" (como Windows NT e Java VM); as extensões além desses precisavam de caracteres adicionais, que resultou na transformação algorítmica dos 21 bits de codificações reservadas pelo padrão Unicode, e nasceram pares substitutos; isso exigia UTF-16. Se você tivesse alguma aplicação em que a consistência da largura dos caracteres fosse mais importante que a eficiência do armazenamento, o UTF-32 (uma vez chamado UCS-4) era uma opção.
UTF-16 é a única coisa remotamente complexa de se lidar, e é facilmente mitigada pelo pequeno intervalo de caracteres afetados por essa transformação e pelo fato de que as sequências principais de 16 bits estão ordenadamente em um intervalo totalmente distinto do final Sequências de 16 bits. Também é um mundo mais fácil do que tentar avançar e retroceder em muitas codificações do início do Leste Asiático, onde você precisava de uma máquina de estado (JIS e EUC) para lidar com as seqüências de escape ou potencialmente retrocedeu vários caracteres até encontrar algo garantido. ser apenas um byte principal (Shift-JIS). O UTF-16 tinha algumas vantagens em sistemas que também podiam executar sequências de 16 bits com eficiência.
A menos que você tenha que viver com dezenas (centenas, realmente) de codificações diferentes por aí, ou tenha que criar sistemas que suportem vários idiomas em codificações diferentes, às vezes até no mesmo documento (como o WorldScript nas versões mais antigas do MacOs), você pode pensar dos formatos de transformação unicode como complexidade desnecessária. Mas é uma redução drástica da complexidade em relação às alternativas anteriores, e cada formato resolve uma restrição técnica real. Eles também são realmente eficientemente conversíveis entre si, não exigindo tabelas de pesquisa complexas.