Caratteri ed Encoding
I computer non capiscono nativamente le lettere o i simboli: capiscono solo numeri binari. Per elaborare il testo, i sistemi digitali utilizzano delle codifiche di caratteri (character encodings) che assegnano un valore intero unico (chiamato code point) ad ogni carattere.
ASCII e Tipi di Dato Base
Section titled “ASCII e Tipi di Dato Base”Lo standard US-ASCII a 7-bit assegna un numero da 0 a 127 ai caratteri di controllo, alle lettere dell’alfabeto latino, ai numeri e alla punteggiatura.
In C, il tipo base per rappresentare un carattere è char. Come abbiamo visto nei capitoli precedenti, char è a tutti gli effetti un piccolo numero intero (generalmente a 8 bit). Il fatto che sia signed o unsigned dipende dal compilatore.
char c = 'A'; // 'A' in ASCII equivale al numero 65Unicode e UTF-8
Section titled “Unicode e UTF-8”L’ASCII non basta per supportare alfabeti globali. Lo standard universale è Unicode, che mappa ogni carattere a un code point logico.
Per salvare questi code point in memoria, si usano diversi formati di trasformazione (UTF). Il più diffuso è UTF-8.
Tipi di Dato per Caratteri Larghi
Section titled “Tipi di Dato per Caratteri Larghi”Per gestire set di caratteri più ampi, il C offre tipi specifici:
wchar_t(Wide Character): 16 bit (Windows) o 32 bit (Linux/Mac).char16_techar32_t: Introdotti nel C11.
💻 Esercizio Pratico: Tipi di Caratteri
Section titled “💻 Esercizio Pratico: Tipi di Caratteri”Stampa la grandezza dei diversi tipi di carattere per capire l’occupazione in memoria.