Qual é a diferença entre texto ASCII e Unicode?

Qual é a diferença entre texto ASCII e Unicode?

ASCII e Unicode são padrões que se referem à representação digital de texto, especificamente caracteres que compõem o texto. No entanto, os dois padrões são significativamente diferentes, com muitas propriedades refletindo sua respectiva ordem de criação.





América Versus the Universe

O American Standard Code for Information Interchange (ASCII), sem surpresa, atende a um público americano, escrevendo no alfabeto inglês. Ele lida com letras não acentuadas, como A-Z e a-z, além de um pequeno número de símbolos de pontuação e caracteres de controle.





Em particular, não há maneira de representar palavras emprestadas adotadas de outras línguas, como café em ASCII, sem anglicizá-los, substituindo caracteres acentuados (por exemplo, cafeteria ) As extensões ASCII localizadas foram desenvolvidas para atender às necessidades de vários idiomas, mas esses esforços tornaram a interoperabilidade difícil e estavam claramente ampliando as capacidades do ASCII.





Em contraste, o Conjunto Universal de Caracteres Codificados (Unicode) encontra-se na extremidade oposta da escala de ambição. O Unicode tenta atender ao maior número possível de sistemas de escrita do mundo, na medida em que abrange línguas antigas e o conjunto favorito de símbolos expressivos de todos, o emoji.

Conjunto de caracteres ou codificação de caracteres?

Em termos simples, um conjunto de caracteres é uma seleção de caracteres (por exemplo, A-Z), enquanto uma codificação de caracteres é um mapeamento entre um conjunto de caracteres e um valor que pode ser representado digitalmente (por exemplo, A = 1, B = 2).



O padrão ASCII é efetivamente ambos: ele define o conjunto de caracteres que representa e um método de mapeamento de cada caractere para um valor numérico.

Em contraste, a palavra Unicode é usada em vários contextos diferentes para significar coisas diferentes. Você pode pensar nisso como um termo abrangente, como ASCII, para se referir a um conjunto de caracteres e várias codificações. Mas, como existem várias codificações, o termo Unicode costuma ser usado para se referir ao conjunto geral de caracteres, em vez de como eles são mapeados.





Tamanho

Devido ao seu escopo, o Unicode representa muito mais caracteres do que ASCII. ASCII padrão usa um intervalo de 7 bits para codificar 128 distintos personagens . O Unicode, por outro lado, é tão grande que precisamos usar terminologias diferentes apenas para falar sobre ele!

Unicode atende a 1.111.998 endereçáveis pontos de código. Um ponto de código é quase análogo a um espaço reservado para um personagem, mas a situação é muito mais complicada do que quando você começa a se aprofundar nos detalhes!





Uma comparação mais útil é quantos scripts (ou sistemas de escrita) são suportados atualmente. Obviamente, o ASCII lida apenas com o alfabeto inglês, essencialmente a escrita latina ou romana. A versão do Unicode produzida em 2020 vai muito além: inclui suporte para um total de 154 scripts.

Armazenar

O intervalo de 7 bits do ASCII significa que cada caractere é armazenado em um único byte de 8 bits; o bit sobressalente não é usado no ASCII padrão. Isso torna os cálculos de tamanho triviais: o comprimento do texto, em caracteres, é o tamanho do arquivo em bytes.

Você pode confirmar isso com a seguinte sequência de comandos bash. Primeiro, criamos um arquivo contendo 12 letras de texto:

como obter Pokémon no iphone
$ echo -n 'Hello, world' > foo

Para verificar se o texto está na codificação ASCII, podemos usar o Arquivo comando:

$ file foo
foo: ASCII text, with no line terminators

Finalmente, para obter o número exato de bytes que o arquivo ocupa, usamos o Estado comando:

$ stat -f%z foo
12

Como o padrão Unicode lida com uma gama muito maior de caracteres, um arquivo Unicode naturalmente ocupa mais espaço de armazenamento. Exatamente quanto depende da codificação.

Repetir o mesmo conjunto de comandos de antes, usando um caractere que não pode ser representado em ASCII, dá o seguinte:

$ echo -n '€' > foo
$ file foo
foo: UTF-8 Unicode text, with no line terminators
$ stat -f%z foo
3

Esse único caractere ocupa 3 bytes em um arquivo Unicode. Observe que o bash criou automaticamente um arquivo UTF-8, pois um arquivo ASCII não pode armazenar o caractere escolhido (€). UTF-8 é de longe a codificação de caracteres mais comum para Unicode; UTF-16 e UTF-32 são duas codificações alternativas, mas são muito menos usadas.

UTF-8 é uma codificação de largura variável, o que significa que usa diferentes quantidades de armazenamento para diferentes pontos de código. Cada ponto de código ocupará entre um e quatro bytes, com a intenção de que os caracteres mais comuns exijam menos espaço, fornecendo um tipo de compactação embutida. A desvantagem é que determinar os requisitos de comprimento ou tamanho de um determinado trecho de texto se torna muito mais complicado.

ASCII é Unicode, mas Unicode não é ASCII

Para compatibilidade com versões anteriores, os primeiros 128 pontos de código Unicode representam os caracteres ASCII equivalentes. Como o UTF-8 codifica cada um desses caracteres com um único byte, qualquer texto ASCII também é um texto UTF-8. Unicode é um superconjunto de ASCII.

No entanto, conforme mostrado acima, muitos arquivos Unicode não podem ser usados ​​em um contexto ASCII. Qualquer caractere que esteja fora dos limites será exibido de maneira inesperada, geralmente com caracteres substituídos que são completamente diferentes daqueles que foram planejados.

Uso Moderno

Para a maioria dos propósitos, ASCII é amplamente considerado um padrão legado. Mesmo em situações que suportam apenas o script latino - onde o suporte total para as complexidades do Unicode é desnecessário, por exemplo - geralmente é mais conveniente usar UTF-8 e tirar proveito de sua compatibilidade ASCII.

como adicionar um favorito no Adobe Acrobat Reader DC

Em particular, as páginas da web devem ser salvas e transmitidas usando UTF-8, que é o padrão para HTML5. Isso está em contraste com a web anterior, que lidava com ASCII por padrão antes de ser substituída pelo Latim 1.

Um padrão que está mudando

A última revisão do ASCII ocorreu em 1986.

Em contraste, o Unicode continua a ser atualizado anualmente. Novos scripts, personagens e, particularmente, novos emojis são adicionados regularmente. Com apenas uma pequena fração deles alocada, o conjunto completo de caracteres provavelmente crescerá e crescerá no futuro previsível.

Relacionado: Os 100 emojis mais populares explicados

ASCII Versus Unicode

O ASCII serviu ao seu propósito por muitas décadas, mas o Unicode agora o substituiu efetivamente para todos os propósitos práticos, exceto os sistemas legados. O Unicode é maior e, portanto, mais expressivo. Representa um esforço colaborativo mundial e oferece uma flexibilidade muito maior, embora às custas de alguma complexidade.

Compartilhado Compartilhado Tweet O email O que é texto ASCII e como ele é usado?

O texto ASCII parece enigmático, mas tem muitos usos na Internet.

Leia a seguir
Tópicos relacionados
  • Tecnologia Explicada
  • Emojis
  • Jargão
  • Cultura da Web
  • Unicode
Sobre o autor Bobby Jack(58 artigos publicados)

Bobby é um entusiasta da tecnologia que trabalhou como desenvolvedor de software por quase duas décadas. Ele é apaixonado por jogos, trabalha como Editor de Críticas na Switch Player Magazine e está imerso em todos os aspectos da publicação online e desenvolvimento web.

Mais de Bobby Jack

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever