ASCII – che in inglese si pronuncia æski (æ come in fat, s come in sorry, k come in car, i come in happy), ma in italiano viene pronunciato aschi o anche asci – è l'acronimo di American
Standard Code
for Information
Interchange ed è il
primo standard introdotto nella codifica dei caratteri di scrittura nel campo dell'IT (Information Techology).
Il codice ASCII originario è stato definito nella norma ISO/IEC 646 - Information
technology - ISO 7-bit coded character set for information
interchange [1]. I caratteri sono codificati con 7 bit cosa che permette di codificare
27
= 128 caratteri numerati da 0 a 127. I concetti alla base dello standard sono semplici e pratici:
→ codificare i caratteri di controllo ovvero i comandi necessari per gestire da remoto una stampante (originariamente una telescrivente);
→ codificare i caratteri stampabili – lettere, numeri, segni di interpunzione e simboli – di impiego più frequente nella scrittura di un testo.
I
caratteri da 0 a 31 sono caratteri di controllo e non sono
stampabili. Il carattere 32 corrisponde a uno spazio. I caratteri da
33 a 126 sono caratteri stampabili. Il carattere 127 corrisponde a
Delete (ed è equivalente a
Backspace).
Questo
è il set di caratteri ASCII originario altrimenti noto come set di caratteri
ASCII di base:
| Codice | Simbolo | Codice | Carattere | Codice | Carattere | Codice | Carattere |
| 0 | NUL | 32 | 64 | @ | 96 | ` | |
| 1 | SOH | 33 | ! | 65 | A | 97 | a |
| 2 | STX | 34 | " | 66 | B | 98 | b |
| 3 | ETX | 35 | # | 67 | C | 99 | c |
| 4 | EOT | 36 | $ | 68 | D | 100 | d |
| 5 | ENQ | 37 | % | 69 | E | 101 | e |
| 6 | ACK | 38 | & | 70 | F | 102 | f |
| 7 | BEL | 39 | ' | 71 | G | 103 | g |
| 8 | BS | 40 | ( | 72 | H | 104 | h |
| 9 | TAB | 41 | ) | 73 | I | 105 | i |
| 10 | LF | 42 | * | 74 | J | 106 | j |
| 11 | VT | 43 | + | 75 | K | 107 | k |
| 12 | FF | 44 | , | 76 | L | 108 | l |
| 13 | CR | 45 | - | 77 | M | 109 | m |
| 14 | SO | 46 | . | 78 | N | 110 | n |
| 15 | SI | 47 | / | 79 | O | 111 | o |
| 16 | DLE | 48 | 0 | 80 | P | 112 | p |
| 17 | DC1 | 49 | 1 | 81 | Q | 113 | q |
| 18 | DC2 | 50 | 2 | 82 | R | 114 | r |
| 19 | DC3 | 51 | 3 | 83 | S | 115 | s |
| 20 | DC4 | 52 | 4 | 84 | T | 116 | t |
| 21 | NAK | 53 | 5 | 85 | U | 117 | u |
| 22 | SYN | 54 | 6 | 86 | V | 118 | v |
| 23 | ETB | 55 | 7 | 87 | W | 119 | w |
| 24 | CAN | 56 | 8 | 88 | X | 120 | x |
| 25 | EM | 57 | 9 | 89 | Y | 121 | y |
| 26 | SUB | 58 | : | 90 | Z | 122 | z |
| 27 | ESC | 59 | ; | 91 | [ | 123 | { |
| 28 | FS | 60 | < | 92 | \ | 124 | | |
| 29 | GS | 61 | = | 93 | ] | 125 | } |
| 30 | RS | 62 | > | 94 | ^ | 126 | ~ |
| 31 | US | 63 | ? | 95 | _ | 127 | |
Questi sono i caratteri stampabili del set di caratteri ASCII di base:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Di fatto il set di caratteri ASCII di base riflette il modo in cui i caratteri sono scritti su (e possono essere riletti da) un foglio di carta scritto con una macchina da scrivere, impiegando un set di caratteri/codice universalmente riconosciuto. Non solo: della macchina da scrivere il codice ASCII conserva, ad esempio, il comando LF (Line Feed) che fa avanzare il foglio alla riga successiva, e il comando CR (Carriage Return) che riporta il carrello della macchina da scrivere (virtuale) all'inizio della riga. Anche se la macchina da scrivere è stato oramai da decenni sostituita da PC, word processor e stampante, è da questa che sono derivati i concetti e questo standard minimo di base.
Gli
altri set di caratteri che vediamo ora hanno progressivamente esteso
il set di caratteri ASCII di base con set di caratteri
aggiuntivi, con l'obiettivo di includere tutti i caratteri di tutte
le lingue (cosa inimmaginabile via hardware, con un dispositivo meccanico come la macchina da scrivere, ma senza sostanziali problemi via software).
Il primo nato allo scopo di estendere il set di caratteri ASCII di base è stato il set di caratteri ANSI
(acronimo di American National Standard
Institute) nel quale i caratteri sono
codificati con 8 bit (1 byte) cosa che permette di codificare 28 =
256 caratteri numerati da 0 a 255. Il set di caratteri ANSI
prevedeva due sottoinsiemi:
→ il set di caratteri ASCII di base (caratteri numerati
da 0 a 127) visto sopra;
→ il set di caratteri ASCII esteso
(caratteri numerati da 128 a 255).
Purtroppo per i caratteri da 128 a
255 del set di caratteri ASCII esteso non si è stabilito subito un accordo e questo ha determinato
la nascita di differenze tra il successivo set internazionale di caratteri ISO-8859-1 – che ha incluso ASCII di base e ASCII esteso – e il set di caratteri a 8 bit Windows
1252 che nel corso dello sviluppo delle prime versioni di Windows si è andato differenziando dal precedente per i caratteri che vanno da 128 a 159.
Conseguentemente si ha che nel set internazionale ISO-8859-1 e nel set Windows 1252:
1) i caratteri che vanno da 0 a 127 (ASCII di base visti sopra) sono identici;
2) i caratteri da 128 a 159 nel set internazionale ISO-8859-1 non sono codificati per evitare conflitti, mentre nel set Windows 1252 sono codificati come segue
€¹‚ƒ„…†‡ˆ‰Š‹Œ¹Ž¹¹‘’“”•–—˜ ™š›œ¹žŸ
(¹ indica i cinque caratteri non codificati) e così rimarranno fino a quando Microsoft vorrà mantenere la compatibilità del suo set di caratteri (che viene denominato impropriamente ANSI) con le vecchie versioni di Windows;
3) i caratteri che vanno da 160 a 255 sono identici e sono codificati come segue
NBSP ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ SHY ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
Stante questo iniziale incidente di percorso, stante la vitale importanza di una codifica univoca dei caratteri e stante il numero elevato di caratteri da codificare (si pensi ad esempio al cirillico, al greco, all'aramaico, all'ebraico e al numero di ideogrammi necessari per codificare i testi in Cinese, Giapponese e Coreano) è nato quindi Unicode, un consorzio no-profit privato al quale partecipano
tutte le principali aziende di informatica, con lo scopo di assegnare
ad ogni carattere impiegato per la scrittura un identificativo univoco indipendente dalla lingua, dalla piattaforma informatica e dal
software impiegato [2].
Gli standard Unicode sono identificati dalla sigla UTF (Unicode Transformation
Format) seguita da un numero progressivo di versione. Dal 1991 il Consorzio Unicode ha
sviluppato gli standard in parallelo con la norma ISO/IEC 10646 che
definisce l'Universal Coded Character Set
(UCS). Entrambi hanno lo stesso repertorio di caratteri, con
gli stessi numeri: fortunatamente, e saggiamente, Unicode e ISO hanno deciso di normare congiuntamente in modo identico questo aspetto di base e così delicato della comunicazione.
Di fatto Unicode è oggi il riferimento ufficiale per la codifica dei caratteri – per definizione in linea con le norme ISO – e comprende:
→ i caratteri ASCII di base – ora inclusi nel set Basic Latin [3]
→ i caratteri ASCII esteso – ora inclusi nel set Latin-1 Supplement [4]
→ i caratteri (a fine 2025 poco meno di 160 000) che in aggiunta ai precedenti sono stati sviluppati per coprire
tutte le lingue del mondo [5].
Attualmente
il più estesamente impiegato è lo standard UTF-8: la stragrande maggioranza delle pagine web sono realizzate impiegando questo standard. Le varie versioni del The Unicode® Standard si possono trovare sul sito del consorzio [6].
----------
[1]
ISO/IEC 646.
https://en.wikipedia.org/wiki/ISO/IEC_646
[2]
The Unicode Consortium.
https://home.unicode.org/
[3] C0 Controls and Basic Latin.
https://www.unicode.org/charts/PDF/U0000.pdf
[4] C1 Controls and Latin-1 Supplement.
https://www.unicode.org/charts/PDF/U0080.pdf
[5]
Unicode Character Code Charts.
https://www.unicode.org/charts/
[6] Enumerated Versions of The Unicode® Standard.
https://www.unicode.org/versions/enumeratedversions.html
Nessun commento:
Posta un commento