Wesley Damasceno

~$ sudo ./programmer

Entendendo como funciona o sistema ASCII e Unicode

24 jun 2025
#cc#ascii#unicode

Tanto o ASCII quanto o Unicode serve para representar texto, isso inclue letras maiúsculas e minúsculas, números, pontuação e até emojis (no caso do Unicode).

ASCII Table

ASCII

De acordo com a tabela ASCII, se recebermos um texto qualquer por exemplo, com o conteúdo: 72 69 76 76 79, essa mensagem em ASCII significaria "HELLO" em maiúsculas.

A CPU no final das contas vai trabalhar com esses valores em binário. E para mostrar isso, o binário resultante desses números são:

01001000 01000101 01001100 01001100 01001111

Cada código em ASCII vai resultar em um binário de 8 bits (1 byte), isso significa que cada código tem 8 dígitos binários. Nesse exemplo temos 58bits=40bits5 * 8bits = 40 bits ou 5 bytes.

E sim, isso significa que o texto "HELLO" em ASCII tem o tamanho de 5 bytes.

Importante

Qualquer código na tabela "ASCII" vai resultar em um binário de 8 bits (1 byte).

Por mais que ela contemple uma quantidade interessante de caracteres possíveis (256), ela é bem limitada.

Já que outros idiomas como português ou árabe podem ser bem diferentes, ter acentuação, fora os emojis também...

Unicode

É ai que entra o Unicode, um sistema que visa suportar os mais diversos tipos de representação de texto, isso inclue emojis, símbolos em outros idiomas e muito mais...

Cada código do Unicode pode ter de 8 a 32 bits, isso porque depende do padrão de codificação, mais conhecido como UTF-8, UTF-16 e UTF-32.

Nota

O emoji (😂) tem os bits 11111011000000010 (17 bits no total, que dá 2bytes+1bit2 bytes + 1 bit).

O padrão de codificação, de forma resumida, é a maneira como os dados (como caracteres, números, ou símbolos) são convertidos em sequências de bits.

Como o Unicode consegue representar até 32 bits, isso dá um número gigantesco de possibilidades de representar informações.

Exemplo com o charset do HTML

Uma maneira simples de visualizar esses dois sistemas de caracteres em ação é usando um HTML simples. Dentro das tag head, existe uma tag usada para o navegador identificar o conjunto de caracteres que ele deve usar pra renderizar os textos:

<meta charset="UTF-8">

Tá vendo esse UTF-8? É nosso sistema Unicode, porém é possível usar o ASCII também:

<meta charset="ASCII">

Agora vamos colocar um h1 pra ver como o navegador lida com esses sistemas:

<head>
  <meta charset="UTF-8">
</head>
<body>
  <h1>Olá, mundo! 😆<h1>
</body>

charset com Unicode

Agora vamos usar o mesmo código, porém usando o sistema ASCII:

<head>
  <meta charset="ASCII">
</head>
<body>
  <h1>Olá, mundo! 😆<h1>
</body>

charset com ASCII

Como o ASCII não tem acentuação e muito menos emojis, nosso h1 ficou todo quebrado haha