Il testo è fatto di numeri
Un computer memorizza il testo come numeri. Ogni carattere ha un code point (la lettera A è 65, a è 97, 0 è 48), e una codifica decide come quel numero diventa byte. ASCII copre 128 caratteri con un byte ciascuno; Unicode ne copre più di un milione, e UTF-8 è la codifica che li scrive con da uno a quattro byte mantenendo ASCII invariato.
Quindi Hi è 72 e 105, che in binario sono 01001000 e 01101001, e in hex 48 69. La é accentata è il code point 233 ma viene memorizzata come due byte, C3 A9; il segno di spunta ✓ sono tre byte, E2 9C 93; un’emoji sono quattro.
Come UTF-8 impacchetta un code point
| Intervallo di code point | Byte | Disposizione dei bit |
|---|---|---|
| U+0000 – U+007F | 1 | 0xxxxxxx |
| U+0080 – U+07FF | 2 | 110xxxxx 10xxxxxx |
| U+0800 – U+FFFF | 3 | 1110xxxx 10xxxxxx 10xxxxxx |
| U+10000 – U+10FFFF | 4 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
I bit iniziali del primo byte dicono quanto è lunga la sequenza, e ogni byte di continuazione inizia con 10. Questo design permette a un decodificatore di risincronizzarsi dopo un errore ed è il motivo per cui si può cercare in un testo UTF-8 byte per byte.
Riferimento ASCII
L’ASCII stampabile va da 32 (spazio) a 126 (~). Le cifre sono 48–57, le lettere maiuscole 65–90, le minuscole 97–122. La differenza tra maiuscole e minuscole è esattamente il bit 5 (valore 32), ed è per questo che c | 0x20 rende minuscola una lettera ASCII. I codici 0–31 sono caratteri di controllo: 9 è tab, 10 è line feed, 13 è carriage return, 27 è escape.
Domande
Come converto testo in binario a mano?
Cerca il codice ASCII di ogni carattere (A = 65), poi converti quel numero decimale in binario e completalo a 8 bit: 65 = 01000001. I caratteri non ASCII vanno prima trasformati in byte UTF-8.
Perché un carattere diventa più di un byte?
Perché UTF-8 usa 2, 3 o 4 byte per tutto ciò che è fuori da ASCII. é è C3 A9, 日 è E6 97 A5, 😀 è F0 9F 98 80. La tabella sotto lo strumento lo mostra per ogni carattere.
Qual è il binario della lettera A?
01000001 (decimale 65, hex 41). La a minuscola è 01100001 (97, hex 61): la stessa con il bit 5 impostato.
Perché da binario a testo dà errore?
Ogni gruppo deve essere un byte (8 cifre binarie, o un valore 0–255), e i byte devono formare UTF-8 valido. Un byte isolato sopra 127, o un byte di continuazione senza byte iniziale, non è testo valido.
È la stessa cosa di Base64?
No. Qui si vedono i byte reali del testo in una base leggibile. Base64 è uno schema diverso e più denso per trasportare byte arbitrari come testo. Vedi lo strumento Base64.