#321 – Unicode e UTF

Pillole di Bit
Pillole di Bit
#321 - Unicode e UTF
Loading
/

Ogni carattere che leggete a video, lo potete vedere corretto solo perché c’è qualcuno che ha lavorato nell’ombra e ha generato le tabelle di conversione tra il carattere e come questo viene salvato in binario sui supporti digitali. E vi assicuro che di facile non c’è NIENTE.

Fai click su questo testo per vedere la trascrizione della puntata

Un ascoltatore mi ha scritto e mi ha detto che nella procedura di export e import di dati di è scontrato con la codifica dei caratteri, quello che forse qualche volta avrete visto come UTF-8 o UTF-16 o, ancora ASCII, o ISO qualcosa o altri mille modi.
In effetti è vero non ne ho mai parlato qui su Pillole di Bit, ottima occasione per una puntata, ho pensato.
Ho creato il file dello script, ho cercato un po’ per studiare e ho scoperto che in confronto aprire il Vaso di Pandora sarebbe stata una passeggiata.
Per questo motivo la puntata sarà una trattazione molto, ma molto semplificata di un problema molto, molto complesso: trattare i caratteri nel mondo dell’informatica.

Partiamo da un assunto che dovrebbe farvi riflettere. Per come stanno le cose, qualsiasi cosa digitale abbiate in mano, se vi fa vedere i caratteri esattamente come li volete, vuol dire che state assistendo a un processo assimilabile alla magia. O dovete ringraziare gente davvero molto brava.
Io credevo che gestire i fusi orari e la gestione delle date fosse complesse, ma poi ho letto la gestione dei caratteri e ho scoperto che è molto, molto, molto peggio.
Più ci si addentra nella tecnologia, più si scopre che molte di quelle cose che noi diamo per scontate, funzionano grazie a menti geniali che si sono messe lì e hanno risolto problemi enormi.
Immaginate di avere un file di testo da salvare da qualche parte.
Voi dovete scrivere delle parole, ma queste devono essere salvate sul disco in modo binario, come chi ascolta spesso questo podcast sa.
È necessario convertire tutti i caratteri in una serie di bit, che possano essere memorizzati sul disco.
Serve avere una tabella di conversione che metta in relazione i bit con i caratteri.
Quanti caratteri abbiamo?
Partiamo dalle cose semplici.
L’alfabeto americano.
Sono 26 lettere, ma sono maiuscole e minuscole, arriviamo a 52, poi ci sono le 10 cifre da 0 a 9, siamo a 62 caratteri diversi. poi ci sono tutti i caratteri quali la punteggiatura, parentesi e gli altri caratteri, quelli di base sono 33.
Siamo arrivati a 95.
Ma non abbiamo finito, perché ci sono tutti i caratteri che non vediamo, come il tab, lo spazio e un sacco di caratteri di controllo, come fine linea, a capo, carattere nullo e così via.
Arriviamo, guarda caso, a 128.
128 è un numero che conosciamo, è una potenza di 2, per la precisione 2 elevato a 7.
Con 7 bit riusciamo a memorizzare 128 caratteri, che di base sono quelli che in genere ci servono per leggere e scrivere.
No, servono per leggere e scrivere in Inglese.
Visto che un byte è composto da 8 bit, possiamo aggiungerlo alla nostra tabella, raddoppiando la quantità di caratteri memorizzabili, così da inserire alcuni simboli matematici e quelli che servono per fare i disegnini che ogni tanto vedete nelle opere d’arte fatte a caratteri, quelle che si chiamano ASCII art.
Si chiamano così perché questo set di caratteri si chiama ASCII che sta per American Standard Code for Information Interchange.
In Italiano codice standard americano per lo scambio di informazioni.
Lo standard nacque a inizio degli anni 60 del 1900.
Noi lo pronunciamo asci, in originale è asky.
Sicuramente lo sto pronunciando male.
Vi sarete subito accorti che c’è un problema.
In Italiano ci sono le lettere accentate, che qui mancano.
Ma mancano le lettere francesi, quelle tedesche e mancano tutti i milioni di caratteri delle scritture che ci sono nel mondo e vi assicuro che, mentre voi state pensando magari al cinese a al giapponese, ce ne sono decine che magari non sapete neanche che esistano. Io le ho scoperte andando a cercare la documentazione.
Tutti questi caratteri, che per noi sono strani, hanno tutti il diritto di essere scritti sugli schermi di chi li usa.
E non possiamo avere una tabella ASCII per ogni lingua, per diversi motivi.
Il primo è che in molte lingue 256 caratteri non bastano, il secondo è che se io faccio un testo nella mia lingua, poi lo spedisco a un interlocutore in Asia, non va bene che dove io ho scritto una A maiuscola lui legga un carattere che nella sua lingua sia completamente diverso perché nella sua tabella, il byte 0x41 è associato a una cosa diversa.
E allora come si fa?
Si estende il set di caratteri in modo che possa contenere tutti i caratteri del mondo.
Nel 1991, dopo circa 30 anni dallo standard ASCII, nasce la versione 1.0 di Unicode.
Negli anni Unicode è cambiato molte volte, l’ultima versione, la 15, è del 2022.
Per far stare all’interno di un’unica tabella tutti i caratteri di tutte le scritture del mondo, i bit sono stati portati da 8 a 21.
In questo modo ci stanno davvero un mondo di caratteri, simboli, ideogrammi, anche tutte le emoji e restano un sacco di posti vuoti, per eventuali espansioni future.
Le prime versioni erano a 16 bit, per 65 mila caratteri, con 21 bit siamo a circa un milione.
La rappresentazione dei byte unicode è comunemente scritta con la U maiuscola, il meno e la stringa esadecimale.
Ma non è finita qui.
Visto che 21 bit non sono pochi e che i byte sono da 8 bit, ogni carattere dovrebbe usare sempre multipli di 8 bit, solitamente 1 byte, 2 byte o 4 byte.
21 bit sta in 4 byte e sprecare un sacco di spazio per usare delle tabelle carattere che non si usano mai è molto controproducente.
Viviamo in un mondo dove lo spazio costa poco e la banda è velocissima, ma se ogni volta che scrivo un carattere devo occupare 4 byte al posto magari di uno, lo spazio occupato sarà inutilmente 4 volte maggiore.
Per questo motivo sono stati inventati degli schemi di ricodifica che comprendono un sottoinsieme di caratteri, solitamente quelli più usati.
Sono nate quindi le codifiche UTF-8, UTF-16 e UTF-32
UTF sta per Unicode Transformation Format, la versione 8 è la più usata ed è stata presentata nel 1993, quando Unicode era alla versione 1.1
Un carattere in UTF-8 occupa tra 1 e 4 byte, in base a un elenco.
Ve la faccio facile, vi assicuro che facile non è.
Se è un carattere che corrisponde ai 127 caratteri ASCII, in UTF-8 il primo bit è 0 e gli altri 7 sono il valore del carattere.
Se diventa più grande, i bit diventano più di 8, vengono quindi distribuiti su più byte, in questo modo, cercate di seguirmi, so che in podcast non è semplice, ma vi lascio in descrizione il link alla wiki
Nel primo byte, composto da 8 bit, i primi bit indicano da quanti byte è composto il carattere. gli altri bit che restano contengono l’effettivo dato del carattere, quando il byte finisce, si continua sul byte successivo.
Esempio.
Un carattere occupa 10 bit
Il primo byte in unicode ha come primi bit 110, che vuol dire che il carattere occupa 2 byte.
Visto che 110 sono 3 bit, ne restano 5 liberi, li occupo con i primi 5 bit che costituiscono il carattere
Il secondo byte inizia sempre con 10 e negli altri 6 metto i rimanenti 5 per concludere la composizione del mio carattere.
Con questa logica, se i caratteri più usati sono nelle prime posizioni, statisticamente i caratteri occuperanno pochi byte, ne occuperanno di più se uso caratteri molto particolari e meno usati.
Senza scendere nei dettagli, gli alfabeti asiatici tipo cinese e giapponese, occupano meno spazio in UTF-16, due byte, che in UTF8, tre bytes per carattere.
Detto tutto questo alcune cose dovrebbero essere abbastanza chiare.
Per trasferire dati tra sistemi diversi è necessario che questi siano scritti con lo stesso identico set di caratteri, se non lo sono serve un sistema che converta da un set all’altro.
Ogni sistema dovrebbe essere in grado di ricevere set di caratteri diversi, per poter leggere messaggi e dati provenienti da chiunque, per evitare i caratteri strani con i punti interrogativi o i quadratini.
Tutti i sistemi digitali sono molto complessi e il grande lavoro che è stato fatto per renderceli facili, ogni tanto, dovrebbe essere apprezzato e non ignorato.
E le emoji?
Anche qui è un discreto caos.
Le emoji standard, di solito, in UTF-8, occupano 4 bytes.
Ma se usate quelle modificate, ad esempio la mano con il pollice su con un tono di pelle diverso, questa occupa il doppio dello spazio, i 4 bytes dell’emoji e altri 4 bytes per il modificatore.
Se poi prendiamo l’emoji con le composizioni delle persone, ad esempio le famiglie, queste sono effettivamente delle composizioni di emoji diverse, per esempio, per rimanere in tema del mese del pride, per fare una famiglia serve l’emoji di un uomo, poi quella di un bambino, quella di una bambina e quella di un uomo, ed ecco che abbiamo 25 byte, perché ci sono anche i caratteri che indicano la combinazione di emoji diverse.

Donazioni
Pillole di Bit è un podcast gratuito da sempre e disponibile per tutti, ma realizzare un podcast ha dei costi in servizi, hardware e software.
Ma non solo, ha anche bisogno di un ritorno in soddisfazione per chi lo produce, settimana dopo settimana, da quasi 10 anni.
Per coprire costi e soddisfazione voi ascoltatori potete contribuire in modo pratico, mettendo mano al portafogli, con una donazione, che sia ogni tanto o un abbonamento mensile, dell’importo che volete, basato su quanto potete permettervi e quanto vale per voi la produzione e i contenuti delle puntate.
Ogni volta che vedo una notifica, sono contento, vuol dire che il mio lavoro ha generato un valore reale.
Potete farlo in modi diversi, tramite Satispay, Paypal o con il Value for Value, con le applicazioni che lo gestiscono, se volete più informazioni sul value 4 value potete fare riferimento alla puntata 297.
I più sinceri ringraziamenti vanno a chi ha voluto donare qualcosa in questa settimana, nel dettaglio
Oltre a donare direttamente, potete anche usare i link sponsorizzati, che a fronte di un vostro ordine, a me riconoscono una percentuale, come Amazon o uno dei migliori provider internet che potete trovare sul mercato: Ehiweb, per loro metto la mano sul fuoco, tutte le persone che si sono abbonate mi hanno dato feedback estremamente positivi.
E non dimenticatevi di parlar bene di Pillole di Bit a chi non lo conosce o a chi non sa dell’esistenza dei podcast.

Quest’anno Tetris ha compiuto 40 anni.
Potrei lasciarvi tante informazioni interessanti dalle quali andare a recuperare un po’ di storia, c’è anche un film carino su Apple TV, ma secondo me, la cosa più interessante di tutte l’ha fatta Valerio Galano, non so se vi ricordate di lui, abbiamo fatto insieme la puntata sulla PEC, la 301. Nel suo podcast, Pensieri in Codice, ha analizzato alcuni dettagli tecnici, anche molto profondi, derivati dal video dove un ragazzino finisce il gioco, nel senso che lo porta a un livello dove a un certo punti si scassa tutto.
Timing della CPU, allocazioni di memoria, tempi di calcolo rispetto agli aggiornamenti dei frame, tempi di risposta del pad.
Ha fatto un’analisi davvero dettagliata e precisa.
Se siete appassionati di videogiochi, di storia dei videogiochi, di hardware, di vecchio hardware o di console, la dovete ascoltare assolutamente. Vi lascio il link nelle note.
Ascoltata la puntata, datemi retta, abbonatevi al podcast, sono sempre puntate di ottima qualità.
Nelle puntate vi lascio anche un video di youtube che fa vedere come funziona il modo particolare di usare il controller per incrementarne la reattività. No, non è affatto facile.

Siamo arrivati alla fine di questa puntata di Pillole di bit, vi ricordo che tutti i link relativi alle cose dette sono nelle note, che trovate sulla vostre app o sul sito.
Io sono Francesco, produttore e voce di questo podcast e vi do appuntamento a lunedì prossimo, per la prossima puntata, disponibile su Feed RSS, o su tutte le piattaforme di podcast, vi registrate e la puntata vi arriva automagicamente.

Grazie per avermi ascoltato!

Ciao!

Pillole di Bit (https://www.pilloledib.it/) è un podcast indipendente realizzato da Francesco Tucci, se vuoi metterti con contatto con me puoi scegliere tra diverse piattaforme:
Telegram (o anche solo il canale dedicato solo ai commenti delle puntate)
TikTok (per ora è un esperimento)
Twitter
BlueSky
– Il mio blog personale ilTucci.com
– Il mio canale telegram personale Le Cose
Mastodon personale
Mastodon del podcast
– la mail (se mi vuoi scrivere in modo diretto e vuoi avere più spazio per il tuo messaggio)

Rispondo sempre

Se questo podcast ti piace, puoi contribuire alla sue realizzazione!
Con una donazione diretta:
– Singola con Satispay
Singola o ricorrente con Paypal
Usando i link sponsorizzati
– Con un acquisto su Amazon (accedi a questo link e metti le cose che vuoi nel carrello)
– Attivando uno dei servizi di Ehiweb

Se hai donato più di 5€ ricordati di compilare il form per ricevere i gadget!

Attenzione! Google Podcast ha chiuso per sempre! Scarica un’app seria per ascoltare podcast e iscriviti ai tuoi podcast preferiti dalla nuova app!

Il sito è gentilmente hostato da ThirdEye (scrivete a domini AT thirdeye.it), un ottimo servizio che vi consiglio caldamente e il podcast è montato con gioia con PODucer, un software per Mac di Alex Raccuglia