1. Historia do ASCII
O ASCII foi desenvolvido pelo American National Standards Institute (ANSI) e publicado em 1963, com revisoes em 1967 e 1986. Foi criado para padronizar a comunicacao entre diferentes sistemas de computadores e terminais, substituindo codificacoes proprietarias incompativeis entre si.
Por decadas, o ASCII foi o padrao dominante em sistemas Unix, protocolos de rede (HTTP, SMTP, FTP) e linguagens de programacao. Mesmo com a ascensao do Unicode, o ASCII permanece compativel — os primeiros 128 pontos de codigo Unicode sao identicos ao ASCII.
2. Estrutura e Categorias
O ASCII original define 128 caracteres (7 bits), divididos em:
- 0–31 (32 chars): Caracteres de controle. Nao representam glifos visiveis mas controlam comportamento de terminais e transmissao de dados.
- 32–47 (16 chars): Espaco e simbolos de pontuacao iniciais.
- 48–57 (10 chars): Digitos numericos 0-9.
- 65–90 (26 chars): Letras maiusculas A-Z.
- 97–122 (26 chars): Letras minusculas a-z.
- 128–255: ASCII Estendido (nao padronizado pelo ASCII original, varia por codepage).
3. Caracteres de Controle
Os caracteres de controle (0–31) ainda sao amplamente usados:
- 09 (HT - Tab): Indentacao em codigo e arquivos TSV.
- 10 (LF - Line Feed): Newline em sistemas Unix/Linux/macOS.
- 13 (CR - Carriage Return): Newline em sistemas antigos, combinado com LF (CRLF) no Windows.
- 27 (ESC - Escape): Sequencias de escape ANSI para cores e formatacao em terminais.
- 00 (NUL): Terminador de string em C/C++.
"Entender os caracteres de controle e essencial para trabalhar com arquivos CSV/TSV, protocolos de rede, terminais e qualquer sistema que processe texto em nivel baixo."
4. Usos no Desenvolvimento
- Validacao de input: verificar se um caractere e alfanumerico, imprimivel ou de controle.
- Conversao de bases: obter o valor hex/decimal de um caractere para uso em strings de escape.
- Analise de protocolos: entender bytes recebidos em comunicacoes seriais ou de rede.
- Encoding/decoding: Base64, URL encoding e outros esquemas usam valores ASCII como referencia.
- Regex e parsing: ranges ASCII como [a-z], [0-9] sao fundamentais em expressoes regulares.
5. ASCII vs Unicode e UTF-8
O Unicode (e sua codificacao UTF-8) foi criado para suportar todos os sistemas de escrita do mundo. A relacao com ASCII e de compatibilidade retroativa:
- Os primeiros 128 pontos de codigo Unicode (U+0000 a U+007F) sao identicos ao ASCII.
- Em UTF-8, caracteres ASCII sao codificados com um unico byte — identico ao ASCII original.
- Texto ASCII valido e automaticamente valido em UTF-8.
Para desenvolvimento moderno, UTF-8 e o padrao recomendado. ASCII funciona como subset de UTF-8 para texto em ingles sem acentos.
6. Perguntas Frequentes
Qual a diferenca entre ASCII e ASCII estendido?
O ASCII original tem 128 caracteres (0–127, 7 bits). O "ASCII estendido" (128–255, 8 bits) nao e um padrao unico — existem multiplas codepages (CP1252, ISO 8859-1, etc.) que atribuem diferentes caracteres aos mesmos valores. Nossa tabela usa ISO 8859-1 para os valores 128–255.
Como obter o codigo ASCII de um caractere em JavaScript?
Use 'A'.charCodeAt(0) para obter o codigo (retorna 65). Para converter de volta: String.fromCharCode(65) retorna 'A'.
O que sao sequencias de escape?
Sequencias como \n (LF), \t (TAB), \r (CR) e \x1B (ESC) sao representacoes textuais de caracteres de controle em strings de codigo. Correspondem diretamente aos valores decimais 10, 9, 13 e 27 na tabela ASCII.