Partager via


Prise en charge des jeux de caractères multioctets (MBCS)

Mise à jour : novembre 2007

Les jeux de caractères multioctets (MBCS) peuvent remplacer Unicode pour la prise en charge des jeux de caractères, tels que les jeux de caractères japonais et chinois, qui ne peuvent pas être représentés par un seul octet. Si vous programmez pour un marché international, utilisez Unicode ou MBCS ou créez votre programme afin de pouvoir le générer pour ces deux solutions sans changer un commutateur.

L'implémentation MBCS la plus courante est DBCS. En règle générale, Visual C++ et en particulier MFC, est totalement compatible avec DBCS.

Pour obtenir des exemples, consultez les fichiers de code source MFC.

Pour les plates-formes utilisées pour des marchés dont les langues utilisent des jeux de caractères de grande taille, il est préférable d'utiliser MBCS au lieu d'Unicode. MFC prend en charge MBCS en utilisant des types de données internationalisables et des fonctions runtime C. Il est conseillé de faire de même dans votre code.

Sous MBCS, les caractères sont codés sur un ou deux octets. Dans les caractères codés sur deux octets, le premier octet (octet de tête) indique que les deux octets doivent être interprétés en tant qu'un seul caractère. Le premier octet provient d'une plage de codes réservée pour une utilisation en tant qu'octets de tête. Les plages d'octets qui peuvent être des octets de tête dépendent de la page de codes utilisée. Par exemple, la page de codes japonaise 932 utilise la plage 0x81 à 0x9F en tant qu'octets de tête, mais la page de codes coréenne 949 utilise une autre plage.

Prenez les éléments suivants en compte lors de la programmation MBCS.

  • Caractères MBCS dans l'environnement
    Les caractères MBCS peuvent s'afficher dans des chaînes, telles que des noms de fichiers et de répertoires.

  • Opérations d'édition
    Les opérations d'édition dans les applications MBCS doivent concerner les caractères et non les octets. Le signe insertion ne doit pas fractionner un caractère, la touche DROITE doit déplacer d'un caractère vers la droite, etc. Delete supprime un caractère, Undo en réinsère un.

  • Gestion de chaînes
    Dans une application qui utilise MBCS, la gestion de chaînes pose des problèmes spécifiques. Les caractères des deux largeurs sont mélangés dans une seule chaîne, c'est pourquoi vous devez contrôler les octets de tête.

  • Prise en charge de la bibliothèque Runtime
    La bibliothèque Runtime C et MFC prennent en charge la programmation sur un octet, MBCS et Unicode. Les chaînes codées sur un octet sont traitées avec la famille de fonctions runtime str, les chaînes MBCS sont traitées avec les fonctions _mbs correspondantes et les chaînes Unicode avec les fonctions wcs correspondantes. Les implémentations de fonction membre de la classe MFC utilisent des fonctions runtime portables qui correspondent, dans certains cas, à la famille de fonctions str, aux fonctions MBCS ou aux fonctions Unicode, comme décrit dans « Portabilité MBCS/Unicode ».

  • Portabilité MBCS/Unicode
    En utilisant Tchar.h, vous pouvez générer des applications codées sur un octet, MBCS et Unicode à partir des mêmes sources. Tchar.h définit des macros préfixées avec _tcs, qui correspondent à str, _mbs ou aux fonctions wcs, selon les besoins. Pour générer du MBCS, définissez le symbole _MBCS. Pour générer du Unicode, définissez le symbole _UNICODE. Par défaut, _MBCS est défini pour les applications MFC. Pour plus d'informations, consultez Mappages de texte générique dans Tchar.h.

Remarque :

Le comportement n'est pas défini si vous définissez _UNICODE et _MBCS.

Les fichiers d'en-tête Mbctype.h et Mbstring.h définissent les fonctions et les macros spécifiques à MBCS, dont vous pouvez avoir besoin dans certains cas. Par exemple, _ismbblead vous indique si un octet spécifique dans une chaîne est un octet de tête.

Pour la portabilité internationale, codez votre programme avec Unicode ou MBCS.

Que voulez-vous faire ?

Voir aussi

Concepts

Jeux de caractères en C++

Prise en charge MBCS dans Visual C++