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 Mo CS, il existe toujours du travail pour vous. Pour vous guider, cette section explique la signification de l'« activation internationale » dans Visual C++ :
Unicode et Mo CS 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 Mo CS 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 Mo CS. Ces précautions ne sont pas nécessaires sous Unicode. Pour plus d’informations, consultez Mo CS Programming Astuces.
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 Mo CS 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 Mo CS, telles que 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.