Tecnologia da Informação

Norma ISO/IEC 2022: Estrutura e Técnicas de Extensão de Códigos de Caracteres

Pontos principais

  • A ISO/IEC 2022 define a estrutura geral para codificações de caracteres, incluindo a reserva de bytes para códigos de controle (C0 e C1).
  • Permite a alternância entre diferentes conjuntos de caracteres em um único documento via sequências de escape (ESC).
  • É fundamental para a interoperabilidade em sistemas de 7 bits, sendo a base de codificações como o ISO-2022-JP.
  • Influenciou a definição de códigos de controle no padrão Unicode.

A ISO/IEC 2022 é uma norma internacional de tecnologia da informação que define a estrutura de códigos de caracteres e as técnicas de extensão para a representação de texto em sistemas computacionais. Este padrão estabelece a base para como diferentes conjuntos de caracteres podem ser organizados e alternados dentro de um único fluxo de dados, permitindo a interoperabilidade entre diversos idiomas e sistemas de escrita.

Fundamentos e Estrutura

Originada em 1971 e revisada pela última vez em 1994, a ISO/IEC 2022 especifica uma estrutura geral para codificações de caracteres. Uma de suas principais características é a reserva de intervalos específicos de bytes para funções não gráficas:

  • Códigos de Controle: Os intervalos 0x00–1F e 0x7F–9F são dedicados a códigos de controle não imprimíveis, utilizados para formatação e instruções em banda (como quebras de linha ou comandos para terminais de texto).
  • Sequências de Escape: A norma define uma sintaxe para sequências de escape, que são sequências de múltiplos bytes iniciadas pelo código de controle ESC. Essas sequências permitem que o sistema execute instruções específicas ou altere o estado da codificação.

A ISO/IEC 2022 é equivalente a outros padrões importantes, como o ECMA-35, o ANSI X3.41 e o JIS X 0202.

Alternância de Conjuntos de Caracteres

Uma das funcionalidades mais críticas da ISO/IEC 2022 é a capacidade de alternar entre diferentes conjuntos de caracteres codificados. Por exemplo, um documento pode iniciar com o conjunto ASCII e, através de uma sequência de escape, mudar para o conjunto japonês JIS X 0208. Isso cria efetivamente uma codificação com estado (stateful encoding), onde o significado de um byte depende do estado atual do decodificador.

Essa flexibilidade tornou a norma essencial em ambientes onde apenas 7 bits estavam disponíveis por byte (como em sistemas de e-mail antigos que não suportavam 8BITMIME), permitindo a transmissão de caracteres complexos em canais limitados.

Conformidade e Codificações Relacionadas

Sistemas de 7 e 8 bits

A norma foi projetada para ser funcional tanto em ambientes de 8 bits quanto de 7 bits. Enquanto codificações de 8 bits (como a série ISO 8859) frequentemente seguem a ISO 2022 ao reservar bytes para códigos de controle, outras (como a página de código 437 do DOS) não o fazem, falhando em reservar o intervalo 0x80–9F.

Idiomas CJK (Chinês, Japonês e Coreano)

Devido à vasta quantidade de caracteres nos idiomas CJK, que excede o limite de 256 caracteres de um único byte, foram desenvolvidas codificações de múltiplos bytes. Muitas dessas codificações, como o GB 2312 (Chinês Simplificado), conformam-se à ISO 2022. Codificações como o ISO-2022-JP são amplamente conhecidas por utilizarem os mecanismos da ISO 2022 para alternar entre conjuntos de caracteres em ambientes de 7 bits, sendo historicamente fundamentais para o e-mail em língua japonesa.

Relação com o Unicode

O advento do Unicode reduziu a necessidade de alternar entre múltiplos conjuntos de caracteres, pois o Unicode visa representar todos os caracteres de todos os idiomas em um único espaço de codificação. No entanto, a influência da ISO 2022 permanece:

  • Códigos de Controle: O Unicode herdou os conceitos de códigos de controle C0 e C1 da ISO 2022.
  • UTF-8: Embora o UTF-8 utilize bytes de 8 bits e divirja da estrutura da ISO 2022 em vários aspectos (como a representação de códigos de controle), existem sequências de escape ISO 2022 específicas para alternar para e do UTF-8, suportadas por alguns emuladores de terminal, como o xterm.

Perguntas frequentes

O que é a norma ISO/IEC 2022?

É um padrão internacional que define a estrutura de códigos de caracteres e técnicas de extensão, permitindo que diferentes conjuntos de caracteres sejam usados e alternados em um único fluxo de dados.

Qual a diferença entre codificações com estado e sem estado?

A ISO 2022 define codificações com estado (stateful), onde sequências de escape alteram o 'estado' do decodificador, mudando o conjunto de caracteres ativo. Codificações sem estado (stateless), como o UTF-8, não dependem de um estado anterior para interpretar um byte específico.

Por que a ISO 2022 foi importante para o e-mail?

Porque permitia que caracteres de idiomas complexos (como o japonês) fossem transmitidos através de sistemas de e-mail antigos que aceitavam apenas caracteres de 7 bits, utilizando sequências de escape para alternar entre o ASCII e conjuntos de caracteres nacionais.

A ISO 2022 ainda é relevante com o Unicode?

Embora o Unicode tenha substituído a necessidade de alternar conjuntos de caracteres para a maioria das aplicações, a ISO 2022 ainda influencia a estrutura de códigos de controle do Unicode e é usada em alguns emuladores de terminais e sistemas legados.