Partager via


Compatibilité internationale

La plupart des codes C et C++ traditionnels font des hypothèses sur la manipulation de caractères et de chaînes qui ne fonctionnent pas correctement pour les applications internationales. Bien que MFC et la bibliothèque d’exécution prennent en charge Unicode ou MBCS, il existe toujours du travail pour vous. Pour vous guider, cette section explique la signification de l'« activation internationale » dans Visual C++ :

  • Unicode et MBCS sont activés par le biais de types de données portables dans les listes de paramètres de fonction MFC et les types de retour. Ces types sont définis de manière conditionnelle de manière appropriée, selon que votre build définit le symbole _UNICODE ou le symbole _MBCS (ce qui signifie DBCS). Différentes variantes des bibliothèques MFC sont automatiquement liées à votre application, selon les deux symboles définis par votre build.

  • Le code de la bibliothèque de classes utilise des fonctions d’exécution portables et d’autres moyens pour garantir un comportement Unicode ou MBCS correct.

  • Vous devez toujours gérer certains types de tâches d’internationalisation dans votre code :

    • Utilisez les mêmes fonctions d’exécution portables qui rendent MFC portable sous l’un ou l’autre environnement.

    • Rendre les chaînes littérales et les caractères portables dans l’un ou l’autre environnement, à l’aide de la _T macro. Pour plus d’informations, consultez Mappages de texte générique dans tchar.h.

    • Prenez des précautions lors de l’analyse de chaînes sous MBCS. Ces précautions ne sont pas nécessaires sous Unicode. Pour plus d’informations, consultez les conseils de programmation MBCS.

    • Veillez à combiner des caractères ANSI (8 bits) et Unicode (16 bits) dans votre application. Il est possible d’utiliser des caractères ANSI dans certaines parties de votre programme et des caractères Unicode dans d’autres, mais vous ne pouvez pas les mélanger dans la même chaîne.

    • Ne codez pas en dur les chaînes dans votre application. Au lieu de cela, faites-les ressources STRINGTABLE en les ajoutant au fichier .rc de l’application. Votre application peut ensuite être localisée sans nécessiter de modifications ou de recompilations de code source. Pour plus d’informations sur les ressources STRINGTABLE, consultez l’Éditeur de chaîne.

Remarque

Les jeux de caractères européens et MBCS ont des caractères, tels que des lettres accentuées, avec des codes de caractères supérieurs à 0x80. Étant donné que la plupart du code utilise des caractères signés, ces caractères supérieurs à 0x80 sont étendus aux signaux lorsqu’ils sont convertis en int. Il s’agit d’un problème pour l’indexation de tableau, car les caractères étendus aux signaux, étant négatifs, indexent en dehors du tableau. Les langues qui utilisent MBCS, comme le japonais, sont également uniques. Étant donné qu’un caractère peut comporter 1 ou 2 octets, vous devez toujours manipuler les deux octets en même temps.

Voir aussi

Unicode et MBCS
Stratégies d’internationalisation