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 ASCIIO 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
- Abra a tabela ASCII gratuita no navegador.
- Encontre o caractere desejado ou busque pelo valor em decimal, hexadecimal ou binário.
- 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
- Como Criar uma Senha ForteTamanho, aleatoriedade e unicidade: as regras simples que realmente protegem suas contas, e como segui-las sem precisar decorar nada.
- Técnica Pomodoro: guia completoTrabalhe em blocos de 25 minutos de foco com pausas curtas. Veja como o método funciona, como começar hoje e como adaptá-lo à sua rotina.
- O que é um hash? MD5, SHA-256 e para que servemUm hash é uma impressão digital curta de qualquer dado. Veja como funciona, quais algoritmos usar e como verificar arquivos e proteger senhas.