O que são codificações de caracteres como ANSI e Unicode e como elas diferem?
Publicados: 2022-01-29ASCII, UTF-8, ISO-8859… Você pode ter visto esses apelidos estranhos flutuando, mas o que eles realmente significam? Continue lendo enquanto explicamos o que é codificação de caracteres e como esses acrônimos se relacionam com o texto simples que vemos na tela.
Blocos de construção fundamentais
Quando falamos sobre a linguagem escrita, falamos sobre as letras serem os blocos de construção das palavras, que então constroem frases, parágrafos e assim por diante. As letras são símbolos que representam sons. Quando você fala sobre linguagem, você está falando sobre grupos de sons que se juntam para formar algum tipo de significado. Cada sistema de linguagem tem um conjunto complexo de regras e definições que governam esses significados. Se você tem uma palavra, é inútil, a menos que você saiba de que idioma é e use-a com outras pessoas que falam esse idioma.
(Comparação de scripts Grantha, Tulu e Malayalam, imagem da Wikipedia)
No mundo dos computadores, usamos o termo “personagem”. Um personagem é uma espécie de conceito abstrato, definido por parâmetros específicos, mas é a unidade fundamental de significado. O 'A' latino não é o mesmo que um 'alpha' grego ou um 'alif' árabe porque eles têm contextos diferentes - são de línguas diferentes e têm pronúncias ligeiramente diferentes - então podemos dizer que são caracteres diferentes. A representação visual de um caractere é chamada de “glifo” e diferentes conjuntos de glifos são chamados de fontes. Grupos de personagens pertencem a um “conjunto” ou a um “repertório”.
Quando você digita um parágrafo e altera a fonte, não altera os valores fonéticos das letras, mas altera a aparência delas. É apenas cosmético (mas não sem importância!). Algumas línguas, como o antigo egípcio e o chinês, têm ideogramas; estes representam idéias inteiras em vez de sons, e suas pronúncias podem variar ao longo do tempo e da distância. Se você substituir um caractere por outro, estará substituindo uma ideia. É mais do que apenas mudar letras, é mudar um ideograma.
Codificação de Caracteres
(Imagem da Wikipédia)
Quando você digita algo no teclado ou carrega um arquivo, como o computador sabe o que exibir? É para isso que serve a codificação de caracteres. O texto no seu computador não é realmente letras, é uma série de valores alfanuméricos emparelhados. A codificação de caracteres atua como uma chave para quais valores correspondem a quais caracteres, assim como a ortografia determina quais sons correspondem a quais letras. O código Morse é uma espécie de codificação de caracteres. Explica como grupos de unidades longas e curtas, como bipes, representam caracteres. No código Morse, os caracteres são apenas letras inglesas, números e pontos finais. Existem muitas codificações de caracteres de computador que se traduzem em letras, números, acentos, sinais de pontuação, símbolos internacionais e assim por diante.
Muitas vezes, neste tópico, o termo “páginas de código” também é usado. Eles são essencialmente codificações de caracteres usadas por empresas específicas, geralmente com pequenas modificações. Por exemplo, a página de código do Windows 1252 (anteriormente conhecida como ANSI 1252) é uma forma modificada da ISO-8859-1. Eles são usados principalmente como um sistema interno para se referir a codificações de caracteres padrão e modificadas que são específicas para os mesmos sistemas. No início, a codificação de caracteres não era tão importante porque os computadores não se comunicavam entre si. Com a internet ganhando destaque e as redes sendo uma ocorrência comum, ela se tornou cada vez mais importante em nosso dia-a-dia sem que percebamos.
Muitos tipos diferentes
(Imagem de Sarah Sosiak)
Existem muitas codificações de caracteres diferentes por aí, e há muitas razões para isso. A codificação de caracteres que você escolhe usar depende de quais são suas necessidades. Se você se comunicar em russo, faz sentido usar uma codificação de caracteres que suporte bem o cirílico. Se você se comunicar em coreano, vai querer algo que represente bem o Hangul e o Hanja. Se você é um matemático, então você quer algo que tenha todos os símbolos científicos e matemáticos bem representados, assim como os glifos gregos e latinos. Se você é um brincalhão, talvez se beneficie de um texto de cabeça para baixo. E, se você quiser que todos esses tipos de documentos sejam vistos por qualquer pessoa, você quer uma codificação que seja bastante comum e facilmente acessível.
Vamos dar uma olhada em alguns dos mais comuns.
(Trecho da tabela ASCII, imagem de asciitable.com)
- ASCII – O Código Padrão Americano para Intercâmbio de Informações é uma das codificações de caracteres mais antigas. Foi originalmente concebido com base em códigos telegráficos e evoluiu ao longo do tempo para incluir mais símbolos e alguns caracteres de controle não impressos agora desatualizados. Provavelmente é o mais básico possível em termos de sistemas modernos, pois é limitado ao alfabeto latino sem caracteres acentuados. Sua codificação de 7 bits permite apenas 128 caracteres, e é por isso que existem várias variantes não oficiais em uso em todo o mundo.
- ISO-8859 – O grupo de codificações de caracteres mais utilizado pela International Organization for Standardization é o número 8859. Cada codificação específica é designada por um número, muitas vezes prefixado por um apelido descritivo, por exemplo, ISO-8859-3 (Latin-3), ISO- 8859-6 (latim/árabe). É um superconjunto de ASCII, o que significa que os primeiros 128 valores na codificação são iguais a ASCII. É de 8 bits, no entanto, e permite 256 caracteres, portanto, é construído a partir daí e inclui uma variedade muito maior de caracteres, com cada codificação específica focando em um conjunto diferente de critérios. Latin-1 incluía um monte de letras e símbolos acentuados, mas mais tarde foi substituído por um conjunto revisado chamado Latin-9, que inclui glifos atualizados como o símbolo do Euro.

(Trecho do script tibetano, Unicode v4, de unicode.org)
- Unicode – Este padrão de codificação visa a universalidade. Atualmente inclui 93 roteiros organizados em vários blocos, com muitos mais em andamento. O Unicode funciona de maneira diferente de outros conjuntos de caracteres, pois em vez de codificar diretamente um glifo, cada valor é direcionado para um “ponto de código”. Esses são valores hexadecimais que correspondem a caracteres, mas os próprios glifos são fornecidos de forma separada pelo programa, como seu navegador da web. Esses pontos de código são geralmente descritos da seguinte forma: U+0040 (que se traduz em '@'). Codificações específicas sob o padrão Unicode são UTF-8 e UTF-16. O UTF-8 tenta permitir a máxima compatibilidade com ASCII. É de 8 bits, mas permite todos os caracteres por meio de um mecanismo de substituição e vários pares de valores por caractere. O UTF-16 abandona a compatibilidade ASCII perfeita para uma compatibilidade de 16 bits mais completa com o padrão.
- ISO-10646 – Esta não é uma codificação real, apenas um conjunto de caracteres de Unicode que foi padronizado pela ISO. É mais importante porque é o repertório de caracteres usado pelo HTML. Algumas das funções mais avançadas fornecidas pelo Unicode que permitem agrupamento e script da direita para a esquerda ao lado da esquerda para a direita estão ausentes. Ainda assim, funciona muito bem para uso na internet, pois permite o uso de uma ampla variedade de scripts e permite que o navegador interprete os glifos. Isso torna a localização um pouco mais fácil.
Que codificação devo usar?
Bem, o ASCII funciona para a maioria dos falantes de inglês, mas não para muito mais. Com mais frequência, você verá ISO-8859-1, que funciona para a maioria dos idiomas da Europa Ocidental. As outras versões da ISO-8859 funcionam para scripts cirílicos, árabes, gregos ou outros específicos. No entanto, se você deseja exibir vários scripts no mesmo documento ou na mesma página da Web, o UTF-8 permite uma compatibilidade muito melhor. Também funciona muito bem para pessoas que usam pontuação adequada, símbolos matemáticos ou caracteres improvisados, como quadrados e caixas de seleção.
(Vários idiomas em um documento, captura de tela de gujaratsamachar.com)
Há desvantagens para cada conjunto, no entanto. O ASCII é limitado em seus sinais de pontuação, portanto, não funciona incrivelmente bem para edições tipograficamente corretas. Já digitou copiar/colar do Word apenas para ter uma combinação estranha de glifos? Essa é a desvantagem da ISO-8859, ou mais corretamente, sua suposta interoperabilidade com páginas de código específicas do sistema operacional (estamos olhando para VOCÊ, Microsoft!). A principal desvantagem do UTF-8 é a falta de suporte adequado em aplicativos de edição e publicação. Outro problema é que os navegadores geralmente não interpretam e apenas exibem a marca de ordem de byte de um caractere codificado em UTF-8. Isso resulta na exibição de glifos indesejados. E, é claro, declarar uma codificação e usar caracteres de outra sem declará-los/referenciá-los adequadamente em uma página da Web torna difícil para os navegadores renderizá-los corretamente e para os mecanismos de pesquisa indexá-los adequadamente.
Para seus próprios documentos, manuscritos e assim por diante, você pode usar o que precisar para fazer o trabalho. No que diz respeito à web, porém, parece que a maioria das pessoas concorda em usar uma versão UTF-8 que não usa uma marca de ordem de byte, mas isso não é totalmente unânime. Como você pode ver, cada codificação de caractere tem seu próprio uso, contexto e pontos fortes e fracos. Como usuário final, você provavelmente não terá que lidar com isso, mas agora você pode dar um passo extra à frente, se assim o desejar.