A tabela ASCII (American Standard Code for Information Interchange) é uma tabela de códigos padrão para comunicação representando os caracteres de texto em diversos equipamentos.
Além dos caracteres que representam letras, números e símbolos, nesta tabela há ainda alguns caracteres de controle que permitem realizar alguma ação sobre a mensagem, como por exemplo, apagar a mensagem, apagar apenas um carácter, emitir um aviso sonoro ao operador (útil nos tempos em que as mensagens demoravam a chegar) entre outros.
Os caracteres com código decimal entre 0 e 31 são caracteres de controle como segue:
Binário | Oct | Dec | Hex | Sigla | Unicode | Notação gráfica | Sequencia de Escape em C | Nome |
000 0000 | 0 | 0 | 0 | NUL | ␀ | ^@ | \0 | Null |
000 0001 | 1 | 1 | 1 | SOH | ␁ | ^A | Start of Heading | |
000 0010 | 2 | 2 | 2 | STX | ␂ | ^B | Start of Text | |
000 0011 | 3 | 3 | 3 | ETX | ␃ | ^C | End of Text | |
000 0100 | 4 | 4 | 4 | EOT | ␄ | ^D | End of Transmission | |
000 0101 | 5 | 5 | 5 | ENQ | ␅ | ^E | Enquiry | |
000 0110 | 6 | 6 | 6 | ACK | ␆ | ^F | Acknowledgement | |
000 0111 | 7 | 7 | 7 | BEL | ␇ | ^G | \a | Bell |
000 1000 | 10 | 8 | 8 | BS | ␈ | ^H | \b | Backspace |
000 1001 | 11 | 9 | 9 | HT | ␉ | ^I | \t | Horizontal Tab |
000 1010 | 12 | 10 | 0A | LF | ␊ | ^J | \n | Line Feed |
000 1011 | 13 | 11 | 0B | VT | ␋ | ^K | \v | Vertical Tab |
000 1100 | 14 | 12 | 0C | FF | ␌ | ^L | \f | Form Feed |
000 1101 | 15 | 13 | 0D | CR | ␍ | ^M | \r | Carriage Return |
000 1110 | 16 | 14 | 0E | SO | ␎ | ^N | Shift Out | |
000 1111 | 17 | 15 | 0F | SI | ␏ | ^O | Shift In | |
001 0000 | 20 | 16 | 10 | DLE | ␐ | ^P | Data Link Escape | |
001 0001 | 21 | 17 | 11 | DC1 | ␑ | ^Q | Device Control 1 (XON) | |
001 0010 | 22 | 18 | 12 | DC2 | ␒ | ^R | Device Control 2 | |
001 0011 | 23 | 19 | 13 | DC3 | ␓ | ^S | Device Control 3 (XOFF) | |
001 0100 | 24 | 20 | 14 | DC4 | ␔ | ^T | Device Control 4 | |
001 0101 | 25 | 21 | 15 | NAK | ␕ | ^U | Negative Acknowledgement | |
001 0110 | 26 | 22 | 16 | SYN | ␖ | ^V | Synchronous Idle | |
001 0111 | 27 | 23 | 17 | ETB | ␗ | ^W | End of Transmission Block | |
001 1000 | 30 | 24 | 18 | CAN | ␘ | ^X | Cancel | |
001 1001 | 31 | 25 | 19 | EM | ␙ | ^Y | End of Medium | |
001 1010 | 32 | 26 | 1A | SUB | ␚ | ^Z | Substitute | |
001 1011 | 33 | 27 | 1B | ESC | ␛ | ^[ | \e | Escape |
001 1100 | 34 | 28 | 1C | FS | ␜ | ^\ | File Separator | |
001 1101 | 35 | 29 | 1D | GS | ␝ | ^] | Group Separator | |
001 1110 | 36 | 30 | 1E | RS | ␞ | ^^ | Record Separator | |
001 1111 | 37 | 31 | 1F | US | ␟ | ^_ | Unit Separator | |
111 1111 | 177 | 127 | 7F | DEL | ␡ | ^? | Delete |
Caracteres entre 32 e 126 são conhecidos como caracteres visíveis (ou imprimíveis). São caracteres que possuem um símbolo visual que corresponde a cada um dos algarismos, letras e demais símbolos que usamos na nossa comunicação escrita.
Binário | Oct | Dec | Hex | Símbolo |
010 0000 | 40 | 32 | 20 | ESPAÇO |
010 0001 | 41 | 33 | 21 | ! |
010 0010 | 42 | 34 | 22 | “ |
010 0011 | 43 | 35 | 23 | # |
010 0100 | 44 | 36 | 24 | $ |
010 0101 | 45 | 37 | 25 | % |
010 0110 | 46 | 38 | 26 | & |
010 0111 | 47 | 39 | 27 | ‘ |
010 1000 | 50 | 40 | 28 | ( |
010 1001 | 51 | 41 | 29 | ) |
010 1010 | 52 | 42 | 2A | * |
010 1011 | 53 | 43 | 2B | + |
010 1100 | 54 | 44 | 2C | , |
010 1101 | 55 | 45 | 2D | – |
010 1110 | 56 | 46 | 2E | . |
010 1111 | 57 | 47 | 2F | / |
011 0000 | 60 | 48 | 30 | 0 |
011 0001 | 61 | 49 | 31 | 1 |
011 0010 | 62 | 50 | 32 | 2 |
011 0011 | 63 | 51 | 33 | 3 |
011 0100 | 64 | 52 | 34 | 4 |
011 0101 | 65 | 53 | 35 | 5 |
011 0110 | 66 | 54 | 36 | 6 |
011 0111 | 67 | 55 | 37 | 7 |
011 1000 | 70 | 56 | 38 | 8 |
011 1001 | 71 | 57 | 39 | 9 |
011 1010 | 72 | 58 | 3A | : |
011 1011 | 73 | 59 | 3B | ; |
011 1100 | 74 | 60 | 3C | < |
011 1101 | 75 | 61 | 3D | = |
011 1110 | 76 | 62 | 3E | > |
011 1111 | 77 | 63 | 3F | ? |
100 0000 | 100 | 64 | 40 | @ |
100 0001 | 101 | 65 | 41 | A |
100 0010 | 102 | 66 | 42 | B |
100 0011 | 103 | 67 | 43 | C |
100 0100 | 104 | 68 | 44 | D |
100 0101 | 105 | 69 | 45 | E |
100 0110 | 106 | 70 | 46 | F |
100 0111 | 107 | 71 | 47 | G |
100 1000 | 110 | 72 | 48 | H |
100 1001 | 111 | 73 | 49 | I |
100 1010 | 112 | 74 | 4A | J |
100 1011 | 113 | 75 | 4B | K |
100 1100 | 114 | 76 | 4C | L |
100 1101 | 115 | 77 | 4D | M |
100 1110 | 116 | 78 | 4E | N |
100 1111 | 117 | 79 | 4F | O |
101 0000 | 120 | 80 | 50 | P |
101 0001 | 121 | 81 | 51 | Q |
101 0010 | 122 | 82 | 52 | R |
101 0011 | 123 | 83 | 53 | S |
101 0100 | 124 | 84 | 54 | T |
101 0101 | 125 | 85 | 55 | U |
101 0110 | 126 | 86 | 56 | V |
101 0111 | 127 | 87 | 57 | W |
101 1000 | 130 | 88 | 58 | X |
101 1001 | 131 | 89 | 59 | Y |
101 1010 | 132 | 90 | 5A | Z |
101 1011 | 133 | 91 | 5B | [ |
101 1100 | 134 | 92 | 5C | \ |
101 1101 | 135 | 93 | 5D | ] |
101 1110 | 136 | 94 | 5E | ^ |
101 1111 | 137 | 95 | 5F | _ |
110 0000 | 140 | 96 | 60 | ` |
110 0001 | 141 | 97 | 61 | a |
110 0010 | 142 | 98 | 62 | b |
110 0011 | 143 | 99 | 63 | c |
110 0100 | 144 | 100 | 64 | d |
110 0101 | 145 | 101 | 65 | e |
110 0110 | 146 | 102 | 66 | f |
110 0111 | 147 | 103 | 67 | g |
110 1000 | 150 | 104 | 68 | h |
110 1001 | 151 | 105 | 69 | i |
110 1010 | 152 | 106 | 6A | j |
110 1011 | 153 | 107 | 6B | k |
110 1100 | 154 | 108 | 6C | l |
110 1101 | 155 | 109 | 6D | m |
110 1110 | 156 | 110 | 6E | n |
110 1111 | 157 | 111 | 6F | o |
111 0000 | 160 | 112 | 70 | p |
111 0001 | 161 | 113 | 71 | q |
111 0010 | 162 | 114 | 72 | r |
111 0011 | 163 | 115 | 73 | s |
111 0100 | 164 | 116 | 74 | t |
111 0101 | 165 | 117 | 75 | u |
111 0110 | 166 | 118 | 76 | v |
111 0111 | 167 | 119 | 77 | w |
111 1000 | 170 | 120 | 78 | x |
111 1001 | 171 | 121 | 79 | y |
111 1010 | 172 | 122 | 7A | z |
111 1011 | 173 | 123 | 7B | { |
111 1100 | 174 | 124 | 7C | | |
111 1101 | 175 | 125 | 7D | } |
111 1110 | 176 | 126 | 7E | ~ |
Como nem só de alfabeto latino e números indo-arábicos se faz uma boa comunicação, com o passar do tempo os códigos após o 127 começaram a ser preenchidos por símbolos diversos de acordo com o fabricante.
Para nós, aqui do mundo ocidental, nós tivemos alguns símbolos acrescidos em computadores especificos. Por exemplo:
- A linha Commodore usava o PETSCII (PET Standard Code of Information Interchange) ou ainda CBM ASCII (Commodore Business Machines ASCII).
- A linha de computadores Macintosh da Apple adotou a tabela de caracteres Mac OS Roman.
- A IBM criou a sua página de códigos 437 com caracteres que fizeram minha diversão na minha adolescência nerd.
ISO 8859 – A evolução e padronização da tabela ASCII
Para padronizar um pouco as coisas foi criado o padrão ISO/IEC 8859. Se você já fez a instalação do Linux ou de algum sistema com recursos um pouco mais avançados, já deve ter lido iso-8859 em algum lugar. E é isso que ela representa, uma padronização, ou tentativa de padronização de tudo acima do caracter 127 da tabela ASCII.
Como uma tabela com apenas 255 símbolos é insuficiente para incluir os símbolos de todos os idiomas do mundo, a tabela foi segmentada em 16 partes, iniciando na ISO8859-1 com os símbolos usados principalmente nos idiomas falados nos países latinos e da Europa Ocidental ; até a ISO8859-16 com idiomas principalmente do sudeste europeu.
Link passado a cima tem a extensa lista com todas as partes da ISO8859, seus caracteres e histórico.
A partir daí a situação finalmente surgiu o Unicode como a atual esperança de tentar colocar todos os caracteres e símbolos em ordem juntando em uma única tabela quase 150 mil caracteres, incluindo ai não só letras e algarismos mas, os ideogramas de diversos idiomas asiáticos, emojis etc.