top of page

ASCII, Unicode e UTF-8 - Como computadores interpretam os texto


Atualmente, não conseguimos mais enxergar o mundo sem tecnologia. Diariamente, em nossos celulares e computadores, estamos sempre conectados, enviando mensagens, escrevendo documentos, acessando páginas de sites, trabalhando, estudando enfim, tudo por meio digital. Mas você já se perguntou como isso tudo é possível?


Todo texto que lemos em um computador, de um simples "Olá" até um emoji 😊, é na verdade uma sequência de números.


A resposta para isso ser possível são os padrões de codificação de caracteres (encodings), como ASCII, Unicode e UTF-8. Equipamentos eletrônicos não entendem texto da forma como nós, humanos, entendemos. Para eles, tudo é bit (0 ou 1). Então, o que ocorre de fato?


Texto é número


Equipamentos eletrônicos só entendem 0 e 1, então todas as letras precisam ser, de alguma forma, mapeadas para tal.


Por exemplo:

A → 01000001
B → 01000010
Y → 01011001
Z → 01011010

Dentro da memória de um computador, tudo é armazenado como números binários. Para que possamos representar texto, precisamos de uma regra que nos diga qual número representa qual caractere. Essa regra é chamada de encoding.


Mas... quem decidiu isso?


Os padrões de codificação foram criados para que todos pudessem seguir de maneira universal.


O padrão ASCII


O ASCII (American Standard Code for Information Interchange) surgiu nos anos 60. Ele utiliza 7 bits, o que corresponde a 128 caracteres (de 0 a 127).


Inclui:

  • Letras de A a Z (maiúsculas e minúsculas)

  • Números de 0 a 9

  • Pontuação

  • Caracteres de controle (como \n e \t)


Exemplo:


 Caractere

 Decimal

 Binário

 A

 65

 01000001

 a

 97

 01100001


Entretanto, logo surgiram os problemas. O ASCII funcionava apenas para o inglês básico, e alguns caracteres de outras línguas não eram mapeados.


Por exemplo:

  • ç, ã, é, ê (português)

  • ä, ü, ß (alemão)

  • ñ (espanhol)

  • 漢字 (japonês/chinês)


Ou seja, era impossível representar a grande maioria das línguas do mundo.


Extensões do ASCII


Para contornar as limitações do ASCII, surgiram várias extensões usando 8 bits (256 caracteres).


Entre elas:

  • ISO-8859-1 (Latin-1)

  • Windows-1252

  • KOI8-R

  • Shift-JIS


Cada região acabou adotando seu próprio padrão, o que resultou em diversas colisões, pois o mesmo número podia representar caracteres diferentes dependendo do sistema utilizado.


É por isso que, ainda hoje, você vê alguns textos corrompidos, algo que ficou conhecido como mojibake.


Com certeza você já viu algo assim:


Olá, João!

O padrão Unicode


Para resolver o problema criado por diversas extensões, outro padrão foi criado, agora com mais abrangência e flexibilidade, o padrão Unicode.


A ideia é que cada caractere do mundo recebe um número único chamado code point, abrangendo assim todos os caracteres existentes de todas as línguas do mundo.


Exemplo:

  • A → U+0041

  • ç → U+00E7

  • ä½  → U+4F60

  • 😊 → U+1F60A


Com isso, atualmente o Unicode suporta mais de 140 mil caracteres.


⚠ Importante: Unicode não é um formato de arquivo. Ele apenas faz o mapeamento de caracteres para números.


UTF-8


O UTF-8 é uma forma de representar os code points do Unicode em bytes.


Algumas das suas características são:

  • Compatibilidade com ASCII

  • Usa tamanho variável (1 a 4 bytes)

  • Economiza espaço para textos em inglês

  • É o padrão da Web


Como funciona?

O seguinte mapeamento é feito em UTF-8:


Faixa de caracteres

Bytes usados

ASCII (U+0000 a U+007F)

1 Byte

Latim estendido

2 Bytes

Ideogramas

3 Bytes

Emojis

4 Bytes


Exemplo:

A → 01000001 (1 byte)
Ç → 11000011 10100111 (2 bytes)
😊 → 4 bytes

Por que o UTF-8 teve sucesso?

  • Mantém a compatibilidade com ASCII

  • Funciona bem em múltiplas línguas

  • Evita o caos dos encodings regionais

  • Tornou-se padrão em HTML, JSON, APIs, bancos de dados, etc.


Basicamente, toda a web utiliza UTF-8.


UTF-16 e UTF-32


Além do UTF-8, existem outros formatos:


UTF-16

  • Usa 2 bytes ou 4 bytes

  • Muito utilizado internamente no Windows e em algumas linguagens de programação, como Java


UTF-32

  • Sempre usa 4 bytes

  • Simples de processar

  • Pouco eficiente em termos de espaço


Cada um tem seus usos específicos, mas o UTF-8 dominou por sua eficiência e compatibilidade.


O que acontece quando o encoding dá errado?


Você já viu algo assim?

Olá, João!

Isso acontece quando o texto foi salvo em UTF-8, mas foi interpretado como ISO-8859-1 ou outro encoding. Esse fenômeno é chamado de mojibake.


Ele ocorre quando o encoding de salvamento é diferente do encoding de leitura.


Por que encoding ainda importa?


Mesmo hoje, os problemas de encoding ainda são constantes e causam:

  • Corrupção de dados

  • Vulnerabilidades em códigos

  • Bugs

  • Incompatibilidade entre sistemas


Entender como os encodings funcionam não é apenas conhecimento histórico, é essencial para qualquer desenvolvedor.



Conclusão


A evolução dos encodings representa a transição de uma computação local e limitada para uma internet global e padronizada.

  • O ASCII resolveu o problema do inglês

  • O Unicode resolveu o problema do mundo

  • O UTF-8 tornou isso prático

Todas as vezes que você enviar uma mensagem com emoji, escrever código ou ler um texto em qualquer idioma, lembre-se: por trás de tudo isso, existe um padrão de codificação trabalhando silenciosamente para que tudo funcione.

Security Every Day © 2025 - Todos os Direitos Reservados por SecDay

  • alt.text.label.LinkedIn
  • alt.text.label.YouTube
bottom of page