Jeux de caractères sur deux octets

Un jeu de caractères sur deux octets (DBCS), également appelé « jeu de caractères 8 bits développé », est un jeu de caractères sur un octet (SBCS) étendu, implémenté en tant que page de code. À l’origine, les DBCS ont été développés pour étendre la conception de SBCS pour gérer des langues telles que le japonais et le chinois. Certains caractères d’un DBCS, y compris les chiffres et les lettres utilisés pour écrire l’anglais, ont des valeurs de code sur un octet. D’autres caractères, tels que les idéogrammes chinois ou les kanjis japonais, ont des valeurs de code sur deux octets. Un DBCS peut correspondre à une page de code Windows ou à une page de code OEM. Une page de code DBCS peut également inclure une page de code non natif, par exemple une page de code EBCDIC. Pour obtenir les définitions de ces pages de code, consultez Pages de code.

Notes

Les nouvelles applications Windows doivent utiliser Unicode pour éviter les incohérences de pages de code variées et pour faciliter la localisation. Toutefois, certains protocoles hérités peuvent nécessiter l’utilisation de pages de code DBCS. Chaque page de code DBCS prend en charge différents caractères, mais aucune page ne prend en charge l’étendue complète des caractères fournis par Unicode. Chaque page de code DBCS prend en charge un sous-ensemble différent, encodé différemment. Les données converties d’une page de code DBCS à une autre sont susceptibles d’être endommagées, car la même valeur de données sur différentes pages de code peut encoder un caractère différent. Les données converties d’Unicode en DBCS sont sujettes à une perte de données, car une page de code donnée peut ne pas être en mesure de représenter chaque caractère utilisé dans ces données Unicode particulières.

 

Pour interpréter une chaîne DBCS, une application doit démarrer au début de la chaîne et effectuer l’analyse vers l’avant. Il effectue le suivi lorsqu’il rencontre un octet de prospect dans la chaîne et traite l’octet suivant comme la partie de fin du même caractère. Si l’application analyse simplement la chaîne un octet à la fois et rencontre un octet qui semble être la valeur de code représentant une barre oblique inverse (« \ »), cet octet peut simplement être l’octet de piste d’un caractère de deux octets. L’application ne peut pas simplement sauvegarder un octet pour voir si l’octet précédent est un octet de prospect, car cette valeur d’octet peut être utilisée à la fois comme octet de prospect et comme octet de piste. Par conséquent, l’application présente essentiellement le même problème qu’avec la barre oblique inverse possible. En d’autres termes, les recherches de sous-chaînes sont beaucoup plus compliquées avec un DBCS qu’avec des SBCS ou Unicode. Par conséquent, les applications qui prennent en charge un DBCS doivent utiliser des fonctions spéciales, telles que _mbsstr, au lieu de la fonction StrStr .

Vos applications utilisent des pages de code Windows DBCS avec les versions « A » des fonctions Windows. Consultez Conventions pour les prototypes de fonction et lespages de code. Pour identifier une page de code DBCS, une application peut utiliser la fonction GetCPInfo ou GetCPInfoEx . Une application peut utiliser la fonction IsDBCSLeadByte pour déterminer si une valeur donnée peut être utilisée comme octet principal d’un caractère de 2 octets. En outre, une application peut utiliser les fonctions MultiByteToWideChar et WideCharToMultiByte pour mapper des chaînes Unicode et DBCS.

Character Sets

Jeux de caractères sur un octet