Supporto per set di caratteri Unicode e multibyte (MBCS)

Alcune lingue, ad esempio giapponese e cinese, hanno set di caratteri di grandi dimensioni. Per supportare la programmazione per questi mercati, Microsoft Foundation Class Library (MFC) consente due diversi approcci alla gestione di set di caratteri di grandi dimensioni:

  • Unicode, wchar_t caratteri wide e stringhe codificate come UTF-16.

  • Set di caratteri multibyte (MBCS),char caratteri e stringhe a byte singolo o doppio codificati in un set di caratteri specifico delle impostazioni locali.

Nota

Microsoft consiglia le librerie Unicode MFC per tutti i nuovi sviluppi.
Le librerie MBCS sono deprecate in Visual Studio 2013 e Visual Studio 2015. Questo non si verifica più.
A partire da Visual Studio 2017, le librerie MBCS non sono più deprecate e non generano avvisi di deprecazione.

Supporto MFC per stringhe Unicode

L'intera libreria di classi MFC è abilitata in modo condizionale per i caratteri Unicode e le stringhe archiviate in caratteri wide come UTF-16. In particolare, la classe CString è abilitata per Unicode.

Questi file di libreria, debugger e DLL vengono usati per supportare Unicode in MFC:

VersioneMFCU.LIB
VersioneMFCdefinita dall'utente. Movimento di liberazione
VERSIONE DI MFCMU.LIB
MFCMversioneUD. Movimento di liberazione
VERSIONE MFCSU.LIB
MFCSversioneUD. Movimento di liberazione
UAFXCW. Movimento di liberazione
UAFXCWD. Movimento di liberazione

VersioneMFCU.PDB
VersioneMFCdefinita dall'utente. PDB
VERSIONE MFCMU.PDB
MFCMversioneUD. PDB
VERSIONE MFCSU.PDB
MFCSversioneUD. PDB
UAFXCW. PDB
UAFXCWD. PDB

U.DLL della versioneMFC
UD.DLL della versioneMFC
U.DLL della versioneMFCM
UD.DLL della versioneMFCM

La versione rappresenta il numero di versione del file, ad esempio '140' indica la versione 14.0.

CString è basato sul TCHAR tipo di dati. Se il simbolo _UNICODE è definito per una compilazione del programma, TCHAR viene definito come tipo wchar_t, un tipo di codifica dei caratteri a 16 bit. In caso contrario, TCHAR è definito come char, la normale codifica dei caratteri a 8 bit. Pertanto, in Unicode, un CString è composto da caratteri a 16 bit. Senza Unicode, è composto da caratteri di tipo char.

Per completare la programmazione Unicode dell'applicazione, è necessario:

  • Utilizzare la _T macro per codificare in modo condizionale le stringhe letterali da portare in Unicode.

  • Quando si passano stringhe, prestare attenzione al fatto che gli argomenti della funzione richiedano una lunghezza in caratteri o una lunghezza in byte. La differenza è importante se si usano stringhe Unicode.

  • Usare versioni portabili delle funzioni di gestione delle stringhe di runtime C.

  • Usare i tipi di dati seguenti per i caratteri e i puntatori a caratteri:

    • Usare TCHAR dove usare char.

    • Usare LPTSTR dove usare char*.

    • Usare LPCTSTR dove usare const char*. CString fornisce l'operatore LPCTSTR da convertire tra CString e LPCTSTR.

CString fornisce anche costruttori con riconoscimento Unicode, operatori di assegnazione e operatori di confronto.

Il riferimento alla libreria di runtime definisce le versioni portabili di tutte le relative funzioni di gestione delle stringhe. Per altre informazioni, vedere la categoria Internazionalizzazione.

Supporto MFC per stringhe MBCS

La libreria di classi è abilitata anche per i set di caratteri multibyte, ma solo per i set di caratteri a byte doppio (DBCS).

In un set di caratteri multibyte un carattere può essere largo uno o 2 byte. Se è largo 2 byte, il primo byte è un "byte lead" speciale scelto da un intervallo specifico, a seconda della tabella codici in uso. Insieme, il lead e i "byte finali" specificano una codifica di caratteri univoca.

Se il simbolo _MBCS è definito per una compilazione del programma, digitare TCHAR, su cui CString è basato, esegue il mapping a char. Spetta all'utente determinare quali byte in un CString sono byte lead e quali sono byte finali. La libreria di runtime C fornisce funzioni che consentono di determinarlo.

In DBCS una determinata stringa può contenere tutti i caratteri ANSI a byte singolo, tutti i caratteri a byte doppio o una combinazione dei due. Queste possibilità richiedono particolare attenzione nell'analisi delle stringhe. Sono inclusi CString gli oggetti .

Nota

La serializzazione di stringhe Unicode in MFC può leggere stringhe Unicode e MBCS indipendentemente dalla versione dell'applicazione in esecuzione. I file di dati sono portabili tra le versioni Unicode e MBCS del programma.

CString Le funzioni membro usano versioni speciali di "testo generico" delle funzioni di runtime C che chiamano oppure usano funzioni che supportano Unicode. Pertanto, ad esempio, se una CString funzione chiama strcmpin genere , chiama invece la funzione _tcscmp generica-text corrispondente. A seconda della modalità di definizione dei simboli _MBCS e _UNICODE delle mappe, _tcscmp viene eseguito il mapping nel modo seguente:

Simboli Funzione
_MBCS definito _mbscmp
_UNICODE definito wcscmp
Nessun simbolo definito strcmp

Nota

I simboli _MBCS e _UNICODE si escludono a vicenda.

I mapping di funzioni di testo generico per tutte le routine di gestione delle stringhe di runtime sono descritti in Riferimenti alla libreria di runtime C. Per un elenco, vedere Internazionalizzazione.

Analogamente, CString i metodi vengono implementati usando mapping di tipi di dati generici. Per abilitare sia MBCS che Unicode, MFC usa TCHAR per o wchar_t, LPTSTR per charchar* o wchar_t*e LPCTSTR per const char* o .const wchar_t* Questi assicurano i mapping corretti per MBCS o Unicode.

Vedi anche

Stringhe (ATL/MFC)
Modifica di stringhe