Condividi tramite


Supporto per Unicode

Il formato Unicode è una specifica che supporta tutti i set di caratteri, inclusi quelli che non possono essere rappresentati con un byte singolo. Se si sta programmando un'applicazione per un mercato internazionale, è necessario stabilire se utilizzare il set di caratteri Unicode o multibyte (MBCS) oppure configurare il programma in modo che possa essere compilato per l'uno o per l'altro formato con la semplice modifica di un'opzione.

Un carattere di tipo "wide" è un codice di carattere multilingue a due byte. La maggior parte dei caratteri utilizzati nei sistemi informatici moderni di tutto il mondo, compresi i simboli tecnici e caratteri di grafica speciali, può essere rappresentata in base alla specifica Unicode come carattere di tipo "wide". I caratteri che non possono essere rappresentati con un unico carattere di tipo "wide" possono essere rappresentati con due caratteri mediante una funzionalità surrogata Unicode. Poiché ciascun carattere di tipo "wide" viene rappresentato sempre con una dimensione fissa di 16 bit, l'uso dei caratteri di tipo "wide" semplifica la programmazione con i set di caratteri internazionali.

Una stringa con caratteri estesi viene rappresentata come una matrice wchar_t[] e vi viene fatto riferimento tramite un puntatore wchar_t*. È possibile rappresentare qualsiasi carattere ASCII come carattere di tipo "wide", facendolo precedere dalla lettera "L". L'\0', ad esempio, è il carattere esteso di terminazione NULL (a 16 bit). In modo analogo, qualsiasi stringa letterale ASCII può essere rappresentata come una stringa effettiva con caratteri estesi, anteponendovi la lettera "L", ad esempio L"Hello".

In genere, i caratteri di tipo "wide" occupano una maggiore quantità di memoria rispetto ai caratteri multibyte, ma consentono un'elaborazione più veloce. Inoltre, non è possibile rappresentare con la codifica multibyte più di un'impostazione locale per volta, mentre Unicode consente di rappresentare simultaneamente tutti i set di caratteri esistenti.

MFC offre il supporto completo per il formato Unicode, con la sola eccezione delle classi di database, in quanto ODBC non supporta il formato Unicode. In MFC il supporto per il formato Unicode è ottenuto mediante l'utilizzo sistematico delle macro trasferibili, come indicato nella tabella riportata di seguito.

Tipi di dati trasferibili in MFC

Tipo/i di dati non trasferibili

Sostituiti da questa macro

char

_TCHAR

char*, LPSTR (tipo di dati Win32)

LPTSTR

const char*, LPCSTR (tipo di dati Win32)

LPCTSTR

La classe CString utilizza _TCHAR come base e fornisce costruttori e operatori che facilitano le operazioni di conversione. La maggior parte delle operazioni di stringa per Unicode può essere scritta utilizzando la stessa logica impiegata per la gestione del set di caratteri ANSI di Windows, con la differenza che l'unità di base è costituita da un carattere a 16 bit anziché da un byte a 8 bit. A differenza di quanto avviene con i set di caratteri multibyte (MBCS), non è necessario, e non è possibile, utilizzare un carattere Unicode come se si trattasse di due byte distinti.

Scegliere l'argomento con cui si desidera procedere

Vedere anche

Concetti

Set di caratteri in C++

Supporto per l'utilizzo di wmain