Partager via


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

Les jeux de caractères multioctets (MBCS) sont une ancienne approche au besoin de la prise en charge des jeux de caractères, comme les caractères chinois et japonais, qui ne peuvent être représentés en un unique octet. Si vous effectuez de nouveaux développements, vous devez utiliser Unicode pour toutes les chaînes de texte sauf peut-être les chaînes du système qui ne sont pas visibles par les utilisateurs finaux. MBCS est une technologie héritée et n'est pas recommandé pour les nouveaux développements.

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.

Avertissement

Dans Visual Studio 2013 et ses versions ultérieures, les bibliothèques MFC pour un encodage de caractères à multi-octets (MBCS) sont fournies comme composants complémentaires à Visual Studio et seront gratuitement disponibles pour les clients de Visual Studio (Pro, Premium et Intégrale uniquement) sur le site de téléchargement de MSDN.

Les bibliothèques prennent environ 440 Mo sur votre lecteur, et l'installation inclut toutes les versions localisées des bibliothèques.Vous pouvez l'installer sur tout ordinateur sur lequel Visual Studio Pro, édition Premium ou finale est installé, et sur lequel les fonctionnalités MFC sont activées

Si vous désinstallez ou réparez Visual Studio, les bibliothèques MBCS seront également désinstallées ou réparées.Toutefois, si vous supprimez juste les fonctionnalités MFC, les bibliothèques MBCS resteront sur votre système.Si vous réparez les bibliothèques MBCS, Visual Studio ne sera pas modifié de quelque manière que ce soit.

Les packages redistribuables pour Visual Studio 2013 et ultérieur incluront toujours MBCS MFC DLLs.Aucune étape supplémentaire n'est requise pour redistribuer les DLLs à vos clients.

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

Pour les plateformes 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 encodé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.

Notes

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

Texte et chaînes en Visual C++

Prise en charge MBCS dans Visual C++