Também disponível em: English · Español · Français · العربية
Tabela ASCII
Todos os caracteres ASCII em decimal, hexadecimal, octal e binário, e uma contagem de que caracteres de controlo alguma coisa ainda usa.
O que é a tabela ASCII
O ASCII atribui um número de 0 a 127 a cada um de 128 caracteres. Noventa e cinco são imprimíveis: o espaço, os algarismos, os dois alfabetos e a pontuação de um teclado norte-americano. Os outros trinta e três não imprimem nada. São caracteres de controlo, e são a metade da tabela que todas as referências enumeram e ninguém explica.
A divisão não é questão de opinião. Na base de dados de caracteres do Unicode esses trinta e três têm o nome literal <control> e os seus nomes verdadeiros vivem num ficheiro de aliases à parte. Esta página é gerada a partir de ambos, portanto os nomes, as abreviaturas e os nomes alternativos são os da norma e não os de alguém de cor.
Tudo o resto num computador moderno assenta em cima disto. O UTF-8 foi desenhado para que os seus primeiros 128 pontos de código sejam exactamente ASCII, byte a byte, e é por isso que um ficheiro de texto em inglês é ao mesmo tempo ASCII válido e UTF-8 válido, e já o é há décadas.
Como usar a tabela
- Pesquise como lhe der na cabeça. Escreva 65, ou 0x41, ou a própria letra A, ou carriage, ou ESC. Valores decimais, hexadecimais, caracteres soltos, nomes, abreviaturas e nomes alternativos: tudo corresponde.
- Leia ao longo da linha para a codificação de que precisa. Cada linha traz decimal, hexadecimal, octal e binário de oito bits, com zeros à esquerda para as colunas alinharem quando as copiar. O botão de copiar dá-lhe o carácter; para os de controlo, que não têm carácter, dá-lhe o escape hexadecimal.
- Veja primeiro a secção dos caracteres de controlo. É a parte com os números surpreendentes, e explica porque um fim de linha do Windows ocupa dois bytes em vez de um.
Quatro dos trinta e três caracteres de controlo ainda se usam
O habitual é descrever os caracteres de controlo como uma lista de nomes sem indicar quais interessam. Contar é mais útil, por isso contámos. Em 9 760 ficheiros de texto e 127 721 432 caracteres — este site inteiro, o seu HTML compilado e doze livros de domínio público — aparecem exactamente quatro dos trinta e três.
A mudança de linha aparece 434 063 vezes e o retorno de carro 229 147. O tabulador sai três vezes e o retrocesso duas, e em ambos os casos dentro de textos que falam deles. Os vinte e nove restantes não saem uma única vez: nem o NUL, nem a campainha, nem o escape, nem o delete, nem nenhum dos dez controlos de transmissão, nem os quatro de dispositivo, nem os quatro separadores de informação.
É que eram instruções para uma máquina que já não existe. Um teletipo era uma máquina de escrever ligada por fio, e os códigos diziam-lhe o que fazer fisicamente: toca a campainha, perfura a fita, pára de ler, põe-te à escuta. Sobreviveram dois porque dois moviam papel. O retorno de carro deslizava o carro até à margem esquerda; a mudança de linha rodava o rolo uma linha. Um teletipo precisava dos dois para começar uma linha nova, e é por isso que um fim de linha do Windows continua a ocupar dois bytes e por isso que mover um ficheiro entre sistemas operativos ainda o pode estragar.
Os separadores de informação são o caso mais triste. O ASCII tem quatro caracteres — separador de ficheiro, de grupo, de registo e de unidade — pensados exactamente para o trabalho que o CSV faz mal, sem nenhum dos problemas de aspas e escapes que fazem da análise de CSV um campo minado. Estão em 0x1C a 0x1F desde 1963 e praticamente nada os usa.
A norma também não concorda consigo mesma
Nove caracteres ASCII têm mais do que um nome oficial, e a tabela mostra-os todos. O mais consequente é o 0x0A, que a base de dados do Unicode lista como LINE FEED, NEW LINE e END OF LINE. Três nomes no mesmo ficheiro para o carácter sobre cujo uso ninguém se entende resume bem porque os fins de linha são uma trapalhada: a própria norma nunca decidiu se avança o papel ou termina a linha.
O tabulador é CHARACTER TABULATION e também HORIZONTAL TABULATION; o 0x0B é LINE TABULATION e também VERTICAL TABULATION. O shift out e o shift in são ainda LOCKING-SHIFT ONE e LOCKING-SHIFT ZERO, de um esquema de troca de conjuntos de caracteres com que quase ninguém se cruza hoje.
Há um caso de fronteira que vale a pena conhecer. O espaço é imprimível — a base de dados chama-lhe SPACE, não <control> — e ainda assim é o único carácter imprimível com abreviatura oficial, SP, porque não desenha nada visível e as tabelas precisam de mostrar alguma coisa. É por isso que aqui vai com a pontuação.
Limites honestos
A contagem de uso é a medição de um corpus, não uma lei. Este site é TypeScript, HTML e prosa em inglês, portanto diz muito sobre o aspecto do código web moderno e nada sobre o que emite um protocolo série ou um terminal de ponto de venda. O software que fala com uma impressora, um leitor de códigos de barras ou um mainframe continua sem dúvida a usar estes códigos: é aí que os controlos de dispositivo e de transmissão sobrevivem. O que o número demonstra é que desapareceram do texto corrente.
O ASCII é além disso apenas os primeiros 128 pontos de código. Tudo o que leve acento, tudo o que esteja noutro alfabeto, todos os emoji e a esmagadora maioria da pontuação que um documento real usa ficam de fora. Se um carácter não está nesta página, o ASCII simplesmente não tem número para ele e o que quer é UTF-8, que começa por concordar exactamente com esta tabela e depois continua.
Por fim, o carácter de escape merece uma nota. Não aparece no nosso corpus, mas está longe de ter morrido: é ele que abre as sequências de escape de terminal que dão cor a qualquer ferramenta de linha de comandos. Não sai no texto guardado porque pertence ao fio entre um programa e um terminal, não aos ficheiros.
Porque é grátis?
Porque é uma tabela de factos públicos. A página é texto estático com uma caixa de pesquisa que a filtra no seu navegador: nada é enviado, nada é guardado e não há servidor pelo meio para a ler.
Portanto não há conta, nem registo, nem nada reservado. Os dados de base são a base de dados de caracteres do Unicode, que qualquer um pode descarregar, e o script que a transforma nesta página está no repositório ao lado dela.