O que é ASCII (e Unicode)?

O código simples por trás de cada letra que você digita, como Unicode e UTF-8 nasceram dele e por que o texto às vezes vira símbolos estranhos.

Codificação 7 min de leitura

Computadores só entendem números, então cada letra, dígito e símbolo que você vê na tela é guardado como um número. O ASCII é o acordo clássico sobre qual número representa qual caractere, e ele ainda está escondido em quase todo arquivo de texto, página web e programa.

Neste guia você vai aprender o que é ASCII, como seus códigos são organizados, por que os acentos davam problema, como Unicode e UTF-8 resolveram isso e como descobrir o código de qualquer caractere em segundos.

Consulte qualquer código ASCII Veja a tabela ASCII completa com valores em decimal, hexadecimal, binário e o caractere. Grátis e direto no navegador. Abrir a tabela ASCII

O que é ASCII?

ASCII significa American Standard Code for Information Interchange (Código Padrão Americano para Intercâmbio de Informações). Ele foi criado na década de 1960 para que máquinas diferentes trocassem texto sem confusão, e atribui um número a cada caractere.

É um código de 7 bits, ou seja, tem 128 valores possíveis, de 0 a 127. Isso basta para o alfabeto inglês em maiúsculas e minúsculas, os dígitos de 0 a 9, sinais de pontuação e um conjunto de códigos de controle.

Caracteres de controle e caracteres imprimíveis

Os 128 códigos se dividem em dois grupos. Os códigos de 0 a 31, mais o 127, são caracteres de controle: não desenham nada, apenas dão instruções a um dispositivo. Os códigos de 32 a 126 são os 95 caracteres imprimíveis que você realmente vê.

Alguns valores que vale conhecer:

  • 32 é o caractere de espaço.
  • 48 a 57 são os dígitos de 0 a 9 (então "0" é 48).
  • 65 a 90 são as letras maiúsculas de A a Z (então "A" é 65).
  • 97 a 122 são as letras minúsculas de a a z (então "a" é 97).
  • 10 é a quebra de linha (line feed), 13 é o retorno de carro e 9 é a tabulação.
  • 0 é o caractere nulo, 27 é o Escape e 127 é o Delete.

O truque entre maiúsculas e minúsculas

Compare "A" (65) com "a" (97): a diferença é exatamente 32. Isso vale para todos os pares de letras, então "B" é 66 e "b" é 98. Em binário, essa diferença é um único bit, o que torna a conversão entre maiúsculas e minúsculas muito barata para o computador.

Os dígitos também seguem um padrão. Como "0" é 48, você transforma o caractere de um dígito no seu valor numérico subtraindo 48. É um truque clássico de programação.

Dica: para converter uma letra em minúscula no ASCII, some 32 ao código. Para converter em maiúscula, subtraia 32.

ASCII estendido e páginas de código: por que os acentos quebravam

Computadores guardam dados em bytes de 8 bits, então sobrava espaço para mais 128 valores (de 128 a 255). Fabricantes e países preencheram esse espaço de formas diferentes, criando as "páginas de código", como a ISO-8859-1 para idiomas da Europa Ocidental ou a Windows-1252.

Elas costumam ser chamadas de ASCII estendido, mas não existe um padrão único: o mesmo número podia ser um "é" em uma página e um símbolo totalmente diferente em outra. Um texto escrito em um sistema podia aparecer errado em outro, e idiomas com milhares de caracteres simplesmente não cabiam.

Unicode: um número para cada caractere

O Unicode resolveu isso dando a cada caractere de cada sistema de escrita um número único, chamado ponto de código (code point), escrito como U+0041 para o "A". Ele cobre latim, cirílico, chinês, árabe, devanágari, bengali e muitos outros alfabetos, além de símbolos e emojis.

Os primeiros 128 pontos de código do Unicode são idênticos ao ASCII, então "A" é 65 nos dois. O Unicode é um catálogo de caracteres; como esses números são gravados em bytes é outra questão, resolvida por uma codificação.

UTF-8: a codificação que dominou a web

O UTF-8 é a forma mais comum de armazenar Unicode. Ele usa de 1 a 4 bytes por caractere: os caracteres ASCII ocupam apenas um byte, idêntico ao ASCII antigo, as letras acentuadas costumam usar dois, muitos outros alfabetos usam três e os emojis usam quatro.

Como um texto ASCII simples já é UTF-8 válido, arquivos antigos e novos convivem bem. Essa compatibilidade é o principal motivo de o UTF-8 ter virado o padrão em páginas web, código-fonte e na maioria dos sistemas modernos.

Por que o texto fica quebrado (mojibake)

O mojibake aparece quando um texto é salvo com uma codificação e lido com outra. Um exemplo clássico: a palavra "café" salva em UTF-8, mas aberta como Windows-1252, aparece como "café", porque os dois bytes do "é" são lidos como dois caracteres separados.

A solução quase sempre é fazer os dois lados concordarem. Declare UTF-8 na sua página web, salve os arquivos em UTF-8 e confira se bancos de dados e ferramentas usam a mesma codificação.

Onde o ASCII ainda é útil

Conhecer o ASCII ajuda no dia a dia técnico. Desenvolvedores usam códigos de caracteres para comparar e ordenar texto, validar entradas, criar analisadores e escrever sequências de escape como \n para quebra de linha ou \t para tabulação.

  • Protocolos e formatos como cabeçalhos HTTP, JSON e CSV usam caracteres ASCII na sua estrutura.
  • Terminais usam o caractere Escape (27) para iniciar comandos de cor e de cursor.
  • Senhas, URLs e identificadores costumam ser limitados a ASCII para evitar problemas de compatibilidade.
  • Depuração: ver o código de um caractere misterioso mostra se é um espaço, uma tabulação ou um símbolo invisível.

Como achar o código de um caractere em 3 passos

  1. Abra a tabela ASCII gratuita no navegador.
  2. Encontre o caractere desejado ou busque pelo valor em decimal, hexadecimal ou binário.
  3. Copie o código no formato de que precisa, como decimal para programar ou hexadecimal para um editor de bytes.

Erros comuns para evitar

  • Achar que o "ASCII estendido" é um único padrão. Não é; depende da página de código.
  • Salvar um arquivo em uma codificação e abri-lo em outra.
  • Confundir caractere com byte: em UTF-8, um caractere pode ocupar até 4 bytes.
  • Misturar o dígito "0" (código 48) com o número 0 ou com o caractere nulo (código 0).
  • Esquecer os caracteres de controle invisíveis, como o retorno de carro (13) e a quebra de linha (10), ao comparar textos de sistemas diferentes.

Conclusão

O ASCII é um código pequeno e elegante de 128 caracteres que ainda está na base da computação moderna. O Unicode estendeu a ideia para todos os idiomas e emojis, e o UTF-8 a tornou prática mantendo a compatibilidade com o ASCII. Quando surgirem símbolos estranhos ou você precisar do código de um caractere, lembre que é só uma questão de combinar codificações, e a tabela grátis está a um clique.

Perguntas frequentes

Quantos caracteres tem o ASCII?

O ASCII padrão tem 128 caracteres, numerados de 0 a 127: 33 códigos de controle (0 a 31 e 127) e 95 caracteres imprimíveis, incluindo o espaço.

Qual a diferença entre ASCII e Unicode?

O ASCII cobre apenas 128 caracteres, voltados principalmente ao inglês. O Unicode atribui um número único a caracteres de praticamente todos os sistemas de escrita, além de símbolos e emojis. Os primeiros 128 pontos de código do Unicode são iguais ao ASCII.

UTF-8 é a mesma coisa que Unicode?

Não. Unicode é o catálogo de caracteres e seus números, enquanto UTF-8 é uma forma de gravar esses números em bytes. Existem outras codificações, como UTF-16, mas o UTF-8 é a mais usada na web.

Qual é o código ASCII da letra A?

O "A" maiúsculo é 65 em decimal (41 em hexadecimal) e o "a" minúsculo é 97 (61 em hexadecimal). A diferença entre eles é sempre 32.

Por que os acentos viram símbolos estranhos?

Normalmente porque o texto foi salvo em uma codificação, como UTF-8, e aberto em outra, como Windows-1252. Usar a mesma codificação nos dois lados, de preferência UTF-8, resolve.

Ferramentas grátis citadas neste artigo

Continue lendo

Todos os artigos