Abilitazione di risorse internazionali

La maggior parte del codice C e C++ tradizionale presuppone la manipolazione di caratteri e stringhe che non funzionano bene per le applicazioni internazionali. Anche se sia MFC che la libreria di runtime supportano Unicode o MBCS, è ancora necessario eseguire questa operazione. Per guidare l'utente, questa sezione illustra il significato di "abilitazione internazionale" in Visual C++:

  • Sia Unicode che MBCS sono abilitati per mezzo di tipi di dati portabili negli elenchi di parametri della funzione MFC e nei tipi restituiti. Questi tipi vengono definiti in modo condizionale nei modi appropriati, a seconda che la compilazione definisca il simbolo o il simbolo _UNICODE _MBCS (ovvero DBCS). Diverse varianti delle librerie MFC vengono collegate automaticamente all'applicazione, a seconda di quale di questi due simboli definisce la compilazione.

  • Il codice della libreria di classi usa funzioni di runtime portabili e altri mezzi per garantire un comportamento Unicode o MBCS corretto.

  • È comunque necessario gestire determinati tipi di attività di internazionalizzazione nel codice:

    • Usare le stesse funzioni di run-time portabili che rendono MFC portabile in entrambi gli ambienti.

    • Rendere portabili stringhe letterali e caratteri in entrambi gli ambienti, usando la _T macro. Per altre informazioni, vedere Mapping di testo generico in tchar.h.

    • Prendere precauzioni durante l'analisi delle stringhe in MBCS. Queste precauzioni non sono necessarie in Unicode. Per altre informazioni, vedere Suggerimenti per la programmazione MBCS.

    • Prestare attenzione se si combinano caratteri ANSI (8 bit) e Unicode (16 bit) nell'applicazione. È possibile usare caratteri ANSI in alcune parti del programma e dei caratteri Unicode in altri, ma non è possibile combinarli nella stessa stringa.

    • Non impostare stringhe hardcoded nell'applicazione. Crea invece le risorse STRINGTABLE aggiungendole al file RC dell'applicazione. L'applicazione può quindi essere localizzata senza richiedere modifiche o ricompilazione del codice sorgente. Per altre informazioni sulle risorse STRINGTABLE, vedere Editor di stringhe.

Nota

I set di caratteri europei e MBCS hanno alcuni caratteri, ad esempio lettere accentate, con codici di carattere maggiori di 0x80. Poiché la maggior parte del codice usa caratteri firmati, questi caratteri maggiori di 0x80 vengono estesi per la firma quando vengono convertiti in int. Si tratta di un problema per l'indicizzazione di matrici perché i caratteri estesi del segno, che sono negativi, indici all'esterno della matrice. Anche le lingue che usano MBCS, ad esempio il giapponese, sono univoche. Poiché un carattere può essere costituito da 1 o 2 byte, è consigliabile modificare entrambi i byte contemporaneamente.

Vedi anche

Unicode e MBCS
Strategie di internazionalizzazione