Unicode et prise en charge du jeu de caractères multioctets (MBCS)
Certains langages, par exemple, Japonais et Chinois, ont des grands jeux de caractères.Pour prendre en charge la programmation pour les marchés, la bibliothèque MFC (microsoft foundation class) est activé pour deux approches différentes à gérer pour les jeux de caractères :
Unicode
Jeux de caractères multioctets (MBCS)
Prise en charge MFC des chaînes Unicode
La bibliothèque de classes entière de manière conditionnelle est activée pour les caractères Unicode et les chaînes.En particulier, la classe unicode CString est activée.
UAFXCW.LIB |
UAFXCW.PDB |
UAFXCWD.LIB |
UAFXCWD.PDB |
MFCxxU.LIB |
MFCxxU.PDB |
MFCxxU.DLL |
MFCxxUD.LIB |
MFCxxUD.PDB |
MFCxxUD.DLL |
MFCSxxU.LIB |
MFCSxxU.PDB |
MFCSxxUD.LIB |
MFCSxxUD.PDB |
MFCMxxU.LIB |
MFCMxxU.PDB |
MFCMxxU.DLL |
MFCMxxUD.LIB |
MFCMxxUD.PDB |
MFCMxxUD.DLL |
(xx représente le numéro de version du fichier ; par exemple, « 80 " signifie la version 8,0.)
CString est basé sur le type de données d' TCHAR .Si le symbole _UNICODE est défini pour une génération de votre programme, TCHAR est défini comme type wchar_t, un type 16 bits d'encodage de caractères.Sinon, TCHAR est défini comme char, l'encodage de caractères de 8 bits normal.Par conséquent, sous Unicode, CString est composé des caractères 16 bits.Sans Unicode, il comprend des caractères de type char.
Pour terminer la programmation Unicode de votre application, vous devez aussi :
Utilisez la macro d' _T au code de façon conditionnelle des chaînes littérales pour être portables au format Unicode.
Lorsque vous passez des chaînes, prêtez l'attention sur si les arguments de fonction requièrent une longueur caractères ou une longueur en octets.La différence est importante si vous utilisez des chaînes Unicode.
Les versions portables d'utilisation de la chaîne gestion de runtime C s'exécute.
Utilisez les types de données suivants pour les caractères et les pointeurs de caractères :
TCHAR où vous utiliseriez char.
LPTSTR où vous utiliseriez char*.
LPCTSTR où vous utiliseriez const char*.CString fournit l'opérateur LPCTSTR à convertir entre CString et LPCTSTR.
CString fournit également des constructeurs, des opérateurs d'assignation, et les opérateurs de comparaison avertis unicode.
Pour des informations connexes sur la programmation Unicode, consultez Rubriques Unicode.Référence de la bibliothèque Runtime définit les versions portables de toutes ses fonctions de gestion de.Consultez la catégorie internationalisation.
Prise en charge MFC des chaînes MBCS
La bibliothèque de classes est également activé pour les jeux de caractères multioctets, mais uniquement pour les jeu de caractères codés sur deux octets (DBCS).
Dans un jeu de caractères multioctets, un caractère peut être d'un ou deux deux octets.S'il s'agit de deux deux octets, son premier octet est « octet de tête » spécial qui est choisi d'un plage spécifique, en fonction de la page de codes est en cours de utilisation.Pris ensemble, le responsable et « octets de queue » spécifiez un seul encodage de caractères.
Si le symbole _MBCS est défini pour une génération de votre programme, tapez TCHAR, sur lequel CString est basé, des cartes à char.Il vous appartient de déterminer les octets dans CString sont des octets de tête ce qui sont des octets de queue.Fournit les fonctions de de la bibliothèque Runtime C pour vous aider à déterminer ceci.
Sous DBCS, une chaîne donnée peut contenir tous les caractères ANSI codé sur un octet, tous les caractères codés sur deux octets, ou une combinaison des deux.Ces possibilités requièrent un soin particulier dans des chaînes d'analyse.Cela inclut les objets d' CString .
[!REMARQUE]
La sérialisation de chaîne Unicode dans MFC peut lire Unicode et les chaînes MBCS ou non version de l'application que vous exécutez.Vos fichiers de données sont portables entre les versions Unicode et MBCS de votre programme.
Versions spéciales « text » génériques n'utilise des fonctions membres d'CString des fonctions runtime C qu'ils appellent, ils utilisent des fonctions en charge unicode.Par conséquent, par exemple, si une fonction d' CString appellerait en général strcmp, ils appellent la fonction correspondante _tcscmp de texte générique à la place.Selon la façon dont les symboles _MBCS et _UNICODE sont définis, _tcscmp mappe les suivantes :
_MBCS défini |
_mbscmp |
_UNICODE défini |
wcscmp |
Aucun de symbole défini |
strcmp |
[!REMARQUE]
Les symboles _MBCS et _UNICODE s'excluent mutuellement.
Les mappages de fonction de texte générique pour les routines à l'exécution de gestion de sont traités dans Référence de la bibliothèque runtime C.En particulier, consultez l' Internationalisation.
De même, les méthodes d' CString sont implémentées à l'aide de les mappages « génériques » de type de données.Pour activer MBCS et Unicode, MFC utilise TCHAR pour char, LPTSTR pour char*, et LPCTSTR pour const char*.Elles vérifient les mappages appropriés pour MBCS ou Unicode.