ASCII, Unicode e códigos de caracteres
Por MICKAEL GOMES CONSULTING · Última atualização: 2026-06-19
Um código de carácter é o número que um computador usa para representar uma letra, um algarismo ou um símbolo. O ASCII atribui os códigos 0 a 127 às letras inglesas básicas, aos algarismos, à pontuação e a um conjunto de caracteres de controlo, ao passo que o Unicode estende a mesma ideia para cobrir praticamente todos os sistemas de escrita do planeta. Perceber os códigos de caracteres explica como o texto se torna números, porque é que a letra maiúscula A vale 65, e como os emojis e as letras acentuadas se enquadram no mesmo esquema.
A tabela ASCII
O ASCII, sigla de American Standard Code for Information Interchange, fixa um código para cada um dos 128 caracteres. Os códigos 0 a 31 são caracteres de controlo não imprimíveis, como a tabulação, a mudança de linha e o retorno de carro. O código 32 é o espaço. Os algarismos 0 a 9 ocupam os códigos 48 a 57, as letras maiúsculas A a Z vão de 65 a 90, e as letras minúsculas a a z vão de 97 a 122.
Uma consequência elegante desta disposição é que as versões maiúscula e minúscula de uma letra diferem exatamente em 32. A vale 65 e a vale 97, portanto inverter um único bit troca a caixa. Como o ASCII cabe em sete bits, cada carácter ASCII ocupa um byte com folga, o que mantinha os primeiros ficheiros de texto pequenos e simples.
De ASCII a Unicode
O ASCII só conseguia descrever o inglês, por isso, à medida que a informática se espalhava, o mundo precisou de um esquema universal. O Unicode atribui um número único, chamado ponto de código, a cada carácter de cada escrita, do latim e do cirílico ao chinês, ao árabe e aos emojis. Os primeiros 128 pontos de código Unicode são deliberadamente idênticos ao ASCII, pelo que todo o texto ASCII existente já é Unicode válido. Os pontos de código escrevem-se normalmente em hexadecimal com um prefixo U+, como U+0041 para A ou U+1F600 para uma cara a sorrir.
Codificação: como os pontos de código se tornam bytes
Um ponto de código é um número abstrato; uma codificação decide como o guardar sob a forma de bytes. O UTF-8, definido na RFC 3629, é a codificação dominante na web. Usa um byte para a gama ASCII original, mantendo o texto inglês compacto, e dois a quatro bytes para os pontos de código mais altos. Esta retrocompatibilidade explica por que motivo o UTF-8 se tornou universal: um ficheiro ASCII antigo já é UTF-8 válido, ao passo que a mesma codificação consegue representar qualquer carácter que o Unicode defina.
Quando converte um código decimal como 65 no seu carácter, está a ler uma entrada desta enorme tabela. Os números pequenos caem no território familiar do ASCII, enquanto os maiores alcançam toda a gama do Unicode. Um conversor de códigos de caracteres permite-lhe passar de um número para o símbolo que ele representa sem consultar a tabela à mão.