Prise en charge pour Unicode
Mise à jour : novembre 2007
Unicode est une spécification pour la prise en charge des jeux de caractères, y compris les jeux de caractères qui ne peuvent pas être représentés par un seul octet. Si vous programmez pour un marché international, utilisez Unicode ou les jeux de caractères multioctets (MBCS) ou créez votre programme afin de pouvoir le générer pour ces deux solutions sans changer un commutateur.
Un caractère élargi est un code de caractère multilingue codé sur deux octets. La plupart des caractères utilisés en informatique moderne, y compris les symboles techniques et les caractères de publication spéciaux, peuvent être représentés en fonction de la spécification Unicode en tant que caractère élargi. Les caractères qui ne peuvent pas être représentés dans un caractère élargi peuvent être représentés dans deux caractères élargis avec la fonctionnalité de substitut de Unicode. Dans la mesure où chaque caractère élargi est toujours représenté dans une taille fixe de 16 bits, l'utilisation des caractères élargis simplifie la programmation avec les jeux de caractères internationaux.
Une chaîne à caractère élargi est représentée sous la forme d'un tableau wchar_t[] vers lequel un pointeur wchar_t* peut pointer. Tout caractère ASCII peut être représenté en tant que caractère élargi en ajoutant la lettre L avant le caractère. Par exemple, L'\0' est le caractère de fin (16 bits) NULL. De même, tout littéral de chaîne ASCII peut être représenté en tant que littéral de chaîne à caractère élargi en ajoutant la lettre L avant le littéral ASCII (L"Hello").
En règle générale, les caractères élargis prennent plus d'espace en mémoire que les caractères multioctets mais sont plus rapides à traiter. De plus, seul un paramètre régional peut être représenté en même temps dans un codage multioctets, alors que tous les jeux de caractères du monde sont représentés en même temps par la représentation Unicode.
La structure MFC est entièrement compatible Unicode, à l'exception des classes de base de données. (ODBC n'est pas compatible Unicode). MFC réalise la compatibilité Unicode en utilisant des macros portables, comme indiqué dans le tableau ci-dessous.
Types de données portables dans MFC
Types de données non portables |
Remplacées par cette macro |
---|---|
char |
_TCHAR |
char*, LPSTR (type de données Win32) |
LPTSTR |
const char*, LPCSTR (type de données Win32) |
LPCTSTR |
La classe CString utilise _TCHAR comme base et fournit des constructeurs et des opérateurs pour des conversions plus faciles. La plupart des opérations sur les chaînes pour Unicode peuvent être écrites en utilisant la même logique que pour le traitement du jeu de caractères ANSI Windows, sauf que l'unité de base de l'opération est un caractère 16 bits au lieu d'un octet de 8 bits. À l'inverse de l'utilisation des jeux de caractères multioctets (MBCS), vous n'avez pas (et ne devez pas) traiter un caractère Unicode comme deux octets distincts.
Que voulez-vous faire ?
Utiliser wmain afin de passer des arguments à caractère élargi à mon programme
Obtenir des informations sur les mappages de texte générique pour la portabilité sur un octet