31Aug

Quais são as codificações de caracteres como ANSI e Unicode, e como elas diferem?

ASCII, UTF-8, ISO-8859. .. Você pode ter visto esses monikers estranhos flutuando, mas o que eles realmente significam? Leia como explicamos o que é a codificação de caracteres e como essas siglas se relacionam com o texto simples que vemos na tela.

Blocos de construção fundamentais

Quando falamos de linguagem escrita, falamos sobre letras como blocos de construção de palavras, que então compilam frases, parágrafos e assim por diante. As letras são símbolos que representam sons. Quando você fala sobre linguagem, você está falando de grupos de sons que se juntam para formar algum tipo de significado. Cada sistema de linguagem possui um conjunto complexo de regras e definições que regem esses significados. Se você tem uma palavra, é inútil a menos que você saiba de que idioma é e você usa isso com outros que falam esse idioma.

( Comparação de scripts de Grantha, Tulu e Malayalam, Imagem da Wikipédia)

No mundo dos computadores, usamos o termo "personagem". Um personagem é um conceito abstrato, definido por parâmetros específicos, mas é o fundamentalunidade de significado. O latim 'A' não é o mesmo que um grego 'alfa' ou um árabe 'alif' porque eles têm contextos diferentes - eles são de diferentes idiomas e têm pronuncias ligeiramente diferentes - para que possamos dizer que eles são personagens diferentes. A representação visual de um personagem é chamada de "glifo" e diferentes conjuntos de glifos são chamados de fontes. Grupos de caracteres pertencem a um "conjunto" ou a um "repertório".

Quando você digita um parágrafo e você altera a fonte, você não está mudando os valores fonéticos das letras, você está mudando a aparência.É apenas cosmético( mas não sem importância!).Algumas línguas, como o egípcio antigo e o chinês, possuem ideogramas;Estes representam idéias inteiras em vez de sons, e suas pronúncias podem variar ao longo do tempo e distância. Se você substituir um personagem por outro, você está substituindo uma idéia.É mais do que apenas mudar de letra, está mudando um ideograma.

Codificação de caracteres

( Imagem da Wikipedia)

Quando você digita algo no teclado ou carrega um arquivo, como o computador sabe o que exibir?É para isso que é a codificação de caracteres. O texto no seu computador não é realmente uma letra, é uma série de valores alfanuméricos emparelhados. A codificação de caracteres atua como uma chave para a qual os valores correspondem a quais caracteres, bem como como a ortografia determina quais sons correspondem a quais letras. O código Morse é uma espécie de codificação de caracteres. Ele explica como grupos de unidades longas e curtas, como bip, representam caracteres. No código Morse, os caracteres são apenas letras inglesas, números e paradas completas. Existem muitas codificações de caracteres de computador que se traduzem em letras, números, marcas de acento, marcas de pontuação, símbolos internacionais e assim por diante.

Frequentemente sobre este tópico, o termo "páginas de código" também é usado. São essencialmente codificações de caracteres usadas por empresas específicas, muitas vezes com pequenas modificações. Por exemplo, a página de códigos do Windows 1252( anteriormente conhecida como ANSI 1252) é uma forma modificada do 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. Com a internet aumentando a proeminência e as redes sendo uma ocorrência comum, tornou-se cada vez mais importante o nosso dia-a-dia, sem que nos percebamos.

Muitos tipos diferentes

( Imagem de sarah sosiak)

Há uma abundância de diferentes codificações de caracteres por aí, e existem muitas razões para isso. Qual a codificação de personagem que você escolhe usar depende das suas necessidades. Se você se comunicar em russo, faz sentido usar uma codificação de personagem que suporte bem cirílico. Se você se comunicar em coreano, então você vai querer algo que represente bem o Hangul e Hanja. Se você é um matemático, então quer algo que tenha todos os símbolos científicos e matemáticos bem representados, bem como os glifos gregos e latinos. Se você é um brincalhão, talvez você se beneficie do texto invertido. E, se você quiser que todos esses tipos de documentos sejam vistos por qualquer pessoa, você quer uma codificação bastante comum e facilmente acessível.

Vamos dar uma olhada em alguns dos mais comuns.

( Extração da tabela ASCII, Imagem de asciitable.com)

  • ASCII - O Código Padrão Americano para Intercâmbio de Informações é uma das mais antigas codificações de personagens. Inicialmente foi 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 é tão básico como você pode obter 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ção de caracteres do grupo internacional de padronização para padronização é o número 8859. Cada codificação específica é designada por um número, muitas vezes prefixado por um moniker descritivo, e. ISO-8859-3( latino-3), ISO-8859-6( latino / árabe).É um superconjunto do ASCII, o que significa que os primeiros 128 valores na codificação são os mesmos que ASCII.No entanto, é de 8 bits e permite 256 caracteres, portanto, ele se desenvolve a partir daí e inclui uma matriz muito maior de caracteres, com cada codificação específica focada em um conjunto diferente de critérios. O Latin-1 incluiu um monte de letras e símbolos acentuados, mas foi posteriormente substituído por um conjunto revisado chamado Latin-9 que inclui glifos atualizados como o símbolo do euro.

( Excerto de script tibetano, Unicode v4, de unicode.org)

  • Unicode - Este padrão de codificação visa a universalidade. Ele atualmente inclui 93 scripts organizados em vários blocos, com muitos mais em trabalhos. O Unicode funciona de forma diferente dos outros conjuntos de caracteres em que, em vez de codificar diretamente para um glifo, cada valor é direcionado para um "ponto de código". Estes são valores hexadecimais que correspondem a caracteres, mas os próprios glifos são fornecidos de forma independente pelo programa, como o seu navegador web. Esses pontos de código são comumente retratados da seguinte forma: U + 0040( que se traduz em '@').Encodificaçõ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 o ASCII.É de 8 bits, mas permite todos os caracteres através de um mecanismo de substituição e vários pares de valores por personagem. UTF-16 valas compatibilidade ASCII perfeita para uma compatibilidade mais completa de 16 bits com o padrão.
  • ISO-10646 - Esta não é uma codificação real, apenas um conjunto de caracteres do Unicode que foi padronizado pelo ISO.É principalmente importante porque é o repertório de personagens usado pelo HTML.Algumas das funções mais avançadas fornecidas pelo Unicode que permitem o agrupamento e da direita para a esquerda, ao lado do script de esquerda para a direita, estão faltando. Ainda assim, funciona muito bem para uso na internet, pois permite o uso de uma grande 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, ASCII funciona para a maioria dos falantes de inglês, mas não para muito mais. Mais frequentemente, você verá o ISO-8859-1, que funciona para a maioria das línguas da Europa Ocidental. As outras versões do ISO-8859 funcionam para cirílico, árabe, grego ou outros scripts específicos. No entanto, se você deseja exibir vários scripts no mesmo documento ou na mesma página, a UTF-8 permite uma compatibilidade muito melhor. Também funciona muito bem para pessoas que usam pontuação adequada, símbolos matemáticos ou personagens fora do manguito, como quadrados e caixas de seleção.

( Múltiplos idiomas em um documento, Captura de tela de gujaratsamachar.com)

No entanto, existem inconvenientes para cada conjunto. ASCII é limitado em suas marcas de pontuação, portanto, não funciona incrivelmente bem para edições tipicamente corretas. Nunca digite copiar / colar do Word apenas para ter alguma combinação estranha de glifos? Essa é a desvantagem do 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 da UTF-8 é a falta de suporte adequado para a edição e publicação de aplicativos. Outro problema é que os navegadores muitas vezes não interpretam e apenas exibem a marca de ordem de bytes de um caractere codificado UTF-8.Isso resulta em exibições de glifos indesejados. E, claro, declarar uma codificação e usar personagens de outra sem declarar / referenciá-las corretamente em uma página da web torna difícil para os navegadores processá-los corretamente e para os mecanismos de pesquisa indexá-los adequadamente.

Para seus próprios documentos, manuscritos, e assim por diante, você pode usar tudo o que você precisa para fazer o trabalho. No entanto, no que diz respeito à web, parece que a maioria das pessoas concorda em usar uma versão UTF-8 que não use uma marca de ordem de bytes, mas isso não é inteiramente unânime. Como você pode ver, cada codificação de caracteres 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 o passo extra para frente, se assim o desejar.