Skip to content

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.

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 65

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.

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_t e char32_t: Introdotti nel C11.

Stampa la grandezza dei diversi tipi di carattere per capire l’occupazione in memoria.