supporto unicode

Unicode Standard è un codice di caratteri standardizzato progettato per codificare testi internazionali per la visualizzazione e la memorizzazione. Utilizza un valore univoco a 16 o 32–bit per rappresentare ogni singolo carattere, indipendentemente dalla piattaforma, dal linguaggio o dal programma. Utilizzando Unicode, è possibile sviluppare un prodotto software che funzionerà con varie piattaforme, lingue e paesi o regioni. Unicode consente anche il trasporto di dati attraverso molti sistemi diversi.

Esistono due diverse forme di supporto Unicode disponibili dal compilatore e dal runtime. Questa sezione descrive le due forme di supporto Unicode e alcune delle funzioni e considerazioni per l'utilizzo di tale supporto. Per ulteriori informazioni su Unicode, visitare la Home page Unicode all'indirizzo www.unicode.org.

Il primo tipo di supporto Unicode è SupportoUCS-2. Quando l'opzione LOCALETYPE (*LOCALEUCS2) viene specificata nel comando di compilazione, il compilatore e il runtime utilizzano caratteri estesi (ovvero, caratteri di tipo wchar_t) e stringhe di caratteri estesi (ovvero, stringhe di tipo wchar_t *) che rappresentano caratteri Unicode a 2 byte. I caratteri stretti (non estesi) e le stringhe di caratteri stretti rappresentano i caratteri EBCDIC, proprio come quando il supporto UCS-2 non è abilitato. I caratteri Unicode rappresentano i punti di codice in CCSID 13488.

Il secondo tipo di supporto Unicode è UTF-8 o UTF-32 (noto anche come supporto UTF). Quando l'opzione LOCALETYPE (*LOCALEUTF) viene specificata nel comando di compilazione, il compilatore e il runtime utilizzano caratteri estesi e stringhe di caratteri estesi che rappresentano caratteri Unicode a 4 byte. Ciascun carattere a 4 byte rappresenta un singolo carattere UTF-32 . I caratteri stretti e le stringhe di caratteri stretti rappresentano i caratteri UTF-8 . Ciascun carattere UTF-8 ha una dimensione compresa tra 1 e 4 byte. La maggior parte dei caratteri normali ha una dimensione di byte singolo e, di fatto, tutti i caratteri ASCII a 7 bit corrispondono direttamente a UTF-8 e hanno una dimensione di 1 byte. I caratteri UTF-8 rappresentano i punti di codice in CCSID 1208.

Quando il supporto UTF è abilitato, non solo i caratteri estesi diventano UTF-32 Unicode, ma anche i caratteri stretti diventano UTF-8 Unicode. Ad esempio, considerare il seguente programma HelloWorld .
#include <stdio.h>

int main() {    
   printf("Hello World\n");    
   return 0; 
}
Quando questo programma viene compilato con il supporto UTF, la stringa di caratteri viene memorizzata all'interno del programma come UTF-8 caratteri e non come caratteri EBCDIC. La funzione printf() lo sa ed è in grado di analizzare i caratteri UTF-8 e generare l'output come previsto. Tuttavia, se questo programma ha richiamato un'altra funzione fornita dall'utente che non sapeva come gestire i caratteri UTF-8 , l'altra funzione potrebbe produrre risultati o comportamenti non corretti.