Il morse è stato la prima codifica a permettere una comunicazione a lunga distanza. E' stato 'Samuel F.B.Morse a metterlo a punto nel 1844. Questo codice è composto da punti e tratti (una specie di codifica binaria …). Esso permise di effettuare delle comunicazioni molto più rapide rispetto a quello che permetteva di fare il sistema di posta utilizzato a quell'epoca negli USA: il Pony Express. L'interprete all'epoca era l'uomo, quindi bisognava avere una buona conoscenza del codice...
Numerosi codici furono poi inventati fra cui il codice d'Emile Baudot (detto fra l'altro code Baudot, gli inglese lo chiamavano a loro volta Murray Code).
Il 10 marzo 1876, il Dott. Graham Bell mise a punto il telefono, un'invenzione rivoluzionaria che permise di far circolare l'informazione vocale in linee metalliche. Per cronaca, la Camera dei rappresentanti ha deciso che l'invenzione del telefono va attribuita ad Antonio Meucci. Quest'ultimo aveva in effetti depositato una richiesta di brevetto nel 1871, ma non aveva potuto finanziarla fino al 1874.
Queste linee permisero lo sviluppo di telescrittori, delle apparecchiature di codifica e decodifica dei caratteri grazie al codice Baudot (i caratteri erano allora codificati a 5 bits e ce n'erano solamente 32...).
Negli anni 60, il codice ASCII (American Standard Code for Information Interchange) è adottato come standard. Esso permette la codifica dei caratteri su 8 bits, con 256 caratteri possibili.
La memoria del computer conserva tutti i dati sotto forma digitale. Non esistono metodi per immagazzinare direttamente i caratteri. Ogni carattere possiede quindi il suo equivalente in codice digitale: è il codice ASCII (American Standard Code for Information Interchange - tradotto « Codifica Americana Standard per lo Scambio d'Informazioni »). La codifica ASCII di base rappresentava i caratteri su 7 bits (cioè 128 caratteri possibili, da 0 a 127).
| carattere | codice ASCII | codice esadecimale |
|---|---|---|
| NUL (Nullo) | 0 | 00 |
| SOH (Start of heading) | 1 | 01 |
| STX (Start of text) | 2 | 02 |
| ETX (End of text) | 3 | 03 |
| EOT (End of transmission) | 4 | 04 |
| ENQ (Enquiry) | 5 | 05 |
| ACK (Acknowledge) | 6 | 06 |
| BEL (Bell) | 7 | 07 |
| BS (Backspace) | 8 | 08 |
| TAB (Tabulazione orizzontale) | 9 | 09 |
| LF (Line Feed, salto di linea) | 10 | 0A |
| VT (Vertical tabulation, tabulazione verticale) | 11 | 0B |
| FF (Form feed) | 12 | 0C |
| CR (Carriage return, ritorno a capo) | 13 | 0D |
| SO (Shift out) | 14 | 0E |
| SI (Shift in) | 15 | 0F |
| DLE (Data link escape) | 16 | 10 |
| DC1 (Device control 1) | 17 | 11 |
| DC2 (Device control 2) | 18 | 12 |
| DC3 (Device control 3) | 19 | 13 | DC4 (Device control 4) | 20 | 14 |
| NAK (Negative acknowledgement) | 21 | 15 |
| SYN (Synchronous idle) | 22 | 16 |
| ETB (End of transmission block, fine del blocco di trasmissione) | 23 | 17 |
| CAN (Cancel, annullamento) | 24 | 18 |
| EM (End of medium, fine del medium) | 25 | 19 | SUB (Substitute, sostituto) | 26 | 1A |
| ESC (Escape, carattere di uscita) | 27 | 1B |
| FS (File separator, separatore di file) | 28 | 1C |
| GS (Group separator, separatore di gruppo) | 29 | 1D |
| RS (Record separator, separatore di registrazione) | 30 | 1E |
| US (Unit separator, separatore di registrazione) | 31 | 1F |
| SP (Space, spazio) | 32 | 20 |
| ! | 33 | 21 |
| " | 34 | 22 |
| # | 35 | 23 |
| $ | 36 | 24 |
| % | 37 | 25 |
| & | 38 | 26 |
| ' | 39 | 27 |
| ( | 40 | 28 |
| ) | 41 | 29 |
| * | 42 | 2A |
| + | 43 | 2B |
| , | 44 | 2C |
| - | 45 | 2D |
| . | 46 | 2E |
| / | 47 | 2F |
| 0 | 48 | 30 |
| 1 | 49 | 31 |
| 2 | 50 | 32 |
| 3 | 51 | 33 |
| 4 | 52 | 34 |
| 5 | 53 | 35 |
| 6 | 54 | 36 |
| 7 | 55 | 37 |
| 8 | 56 | 38 |
| 9 | 57 | 39 |
| : | 58 | 3A |
| ; | 59 | 3B |
| < | 60 | 3C |
| = | 61 | 3D |
| > | 62 | 3E |
| ? | 63 | 3F |
| @ | 64 | 40 |
| A | 65 | 41 |
| B | 66 | 42 |
| C | 67 | 43 |
| D | 68 | 44 |
| E | 69 | 45 |
| F | 70 | 46 |
| G | 71 | 47 |
| H | 72 | 48 |
| I | 73 | 49 |
| J | 74 | 4A |
| K | 75 | 4B |
| L | 76 | 4C |
| M | 77 | 4D |
| N | 78 | 4E |
| O | 79 | 4F |
| P | 80 | 50 |
| Q | 81 | 51 |
| R | 82 | 52 |
| S | 83 | 53 |
| T | 84 | 54 |
| U | 85 | 55 |
| V | 86 | 56 |
| W | 87 | 57 |
| X | 88 | 58 |
| Y | 89 | 59 |
| Z | 90 | 5A |
| [ | 91 | 5B |
| \ | 92 | 5C |
| ] | 93 | 5D |
| ^ | 94 | 5E |
| _ | 95 | 5F |
| ` | 96 | 60 |
| a | 97 | 61 |
| b | 98 | 62 |
| c | 99 | 63 |
| d | 100 | 64 |
| e | 101 | 65 |
| f | 102 | 66 |
| g | 103 | 67 |
| h | 104 | 68 |
| i | 105 | 69 |
| j | 106 | 6A |
| k | 107 | 6B |
| l | 108 | 6C |
| m | 109 | 6D |
| n | 110 | 6E |
| o | 111 | 6F |
| p | 112 | 70 |
| q | 113 | 71 |
| r | 114 | 72 |
| s | 115 | 73 |
| t | 116 | 74 |
| u | 117 | 75 |
| v | 118 | 76 |
| w | 119 | 77 |
| x | 120 | 78 |
| y | 121 | 79 |
| z | 122 | 7A |
| { | 123 | 7B |
| | | 124 | 7C |
| } | 125 | 7D |
| ~ | 126 | 7E |
| Tasto di cancellazione | 127 | 7F |
Il codice ASCII è stato messo a punto per la lingua inglese, non contiene quindi dei caratteri accentati, ne dei caratteri specifici ad una lingua. Per codificare questo tipo di carattere bisogna ricorrere ad un altro codice. Il codice ASCII ha quindi esteso a 8 bits (un octet) per poter codificare più caratteri (si parla quindi di codice ASCII esteso...).
Questo codice attribuisce i valori da 0 a 255 (il cui codice su 8 bits, ossia 1 octet) alle lettere maiuscole e minuscole, alle cifre, alla punteggiatura e agli altri simboli (caratteri accentuati in caso di codice iso-latin 1).
Il codice ASCII esteso non è unico e dipende fortemente dalla piattaforma utilizzata.
I due giochi di caratteri ASCII esteso usati più frequentemente sono :
Il codice EBCDIC (Extended Binary-Coded Decimal Interchange Code), sviluppato da IBM, permette di codificare i caratteri ad 8 bits. Anche se largamente diffuso sui terminali IBM, non c'è stato il successo che invece ha riscontrato il codice ASCII.
Il codice Unicode è un sistema di codifica dei caratteri a 16 bits messo a punto nel 1991. Il sistema Unicode permette di rappresentare tutti i caratteri attraverso un codice a 16 bits, indipendentemente da qualsiasi sistema operativo o linguaggio di programmazione.
Esso raggruppa infatti la quasi totalità degli alfabeti esistenti (arabo, armeno, cirillico, greco, ebraico, latino, …) ed è compatibile con il codice ASCII.
L'insieme dei codici Unicode è disponibile sul sito http://www.unicode.org.