Supporto per set di caratteri multibyte (MBCS, Multibyte Character Set)

I set di caratteri multibyte (MBCS) rappresentano un'alternativa al formato Unicode per il supporto di set di caratteri che, come quello giapponese o cinese, non possono essere rappresentati con un singolo byte. Se si sta programmando un'applicazione per un mercato internazionale, si consiglia di considerare la possibilità di utilizzare il formato Unicode o MBCS oppure di configurare il programma in modo che possa essere compilato per l'uno o per l'altro formato semplicemente modificando un'opzione.

L'implementazione più comune del formato MBCS corrisponde ai set di caratteri a byte doppio (DBCS). Visual C++ in generale e MFC in particolare garantiscono il supporto completo per il formato DBCS.

Per gli esempi, vedere i file di codice sorgente di MFC.

Per le piattaforme utilizzate nei mercati le cui lingue utilizzano set di caratteri estesi, la migliore alternativa a Unicode è MBCS. MFC supporta il formato MBCS utilizzando tipi di dati internazionalizzabili e funzioni di runtime del linguaggio C. Si consiglia di impostare il proprio codice in modo analogo.

Nel formato MBCS i caratteri vengono codificati in uno o due byte. Nei caratteri a due byte il primo byte, o byte iniziale, segnala che sia esso che il byte successivo dovranno essere interpretati come un unico carattere. Il primo byte proviene da una serie di codici destinati a essere utilizzati come byte iniziali. La tabella codici utilizzata determina l'intervallo di byte che diventeranno byte iniziali. La tabella codici giapponese 932, ad esempio, utilizza come byte iniziali l'intervallo compreso tra 0x81 e 0x9F, mentre la tabella codici coreana 949 utilizza un insieme diverso.

Quando si programma con MBCS, è necessario considerare tutti i punti riportati di seguito.

  • Presenza dei caratteri MBCS nell'ambiente
    I caratteri MBCS possono essere presenti in stringhe quali i nomi di file e directory.

  • Operazioni di modifica
    Le operazioni di modifica effettuate nelle applicazioni MBCS devono basarsi sui caratteri e non sui byte. Il punto di inserimento non deve suddividere un carattere, il tasto freccia DESTRA deve consentire di spostarsi a destra di un unico carattere e così via. Elimina o il tasto Canc deve eliminare un carattere e Annulla deve ripristinarlo.

  • Gestione delle stringhe
    In un'applicazione che utilizza il formato MBCS, la gestione delle stringhe pone problemi particolari. Caratteri di entrambe le ampiezze si trovano combinati in un'unica stringa. È pertanto necessario ricordarsi di controllare i byte iniziali.

  • Supporto per la libreria di runtime
    La libreria di runtime del linguaggio C e MFC supportano la programmazione a byte singolo, MBCS e Unicode. Le stringhe a byte singolo vengono elaborate con la famiglia di funzioni di runtime str, mentre le stringhe MBCS vengono elaborate con le corrispondenti funzioni _mbs e le stringhe Unicode con le corrispondenti funzioni wcs. Le implementazioni delle funzioni membro delle classi di MFC utilizzano funzioni della libreria di runtime portabili che, a seconda delle circostanze, corrispondono alla normale famiglia di funzioni str, alle funzioni MBCS o alle funzioni Unicode, come descritto nel paragrafo che segue.

  • Portabilità MBCS/Unicode
    Se si utilizza il file di intestazione Tchar.h, è possibile compilare applicazioni a byte singolo, MBCS e Unicode a partire dallo stesso codice sorgente. Tchar.h definisce le macro caratterizzate dal prefisso _tcs, che corrispondono alle funzioni str, _mbs o wcs, a seconda dei casi. Per compilare applicazioni per il formato MBCS, definire il simbolo _MBCS. Per compilare un'applicazione per il formato Unicode, definire il simbolo _UNICODE. In base all'impostazione predefinita, per le applicazioni MFC viene definito _MBCS. Per ulteriori informazioni, vedere Mapping di testo generico in Tchar.h.

Nota

Se si definisce sia _UNICODE che _MBCS, il funzionamento rimarrà non definito.

I file di intestazione Mbctype.h e Mbstring.h definiscono le funzioni e le macro specifiche di MBCS, che potrebbero risultare necessarie in alcuni casi. _ismbblead, ad esempio, indica se un determinato byte all'interno di una stringa è un byte iniziale.

Per garantire la portabilità internazionale, scrivere il programma in modo che sia in grado di supportare il set di caratteri Unicode o multibyte (MBCS).

Scegliere l'argomento con cui si desidera procedere

Vedere anche

Concetti

Set di caratteri in C++

Supporto per MBCS in Visual C++