Delen via


Ondersteuning voor Multibyte Character Sets (MBCSs)

Multibyte-tekensets (MBCSs) zijn een oudere benadering van de noodzaak om tekensets, zoals Japans en Chinees, te ondersteunen die niet in één byte kunnen worden weergegeven. Als u nieuwe ontwikkeling uitvoert, moet u Unicode gebruiken voor alle tekenreeksen, behalve misschien systeemtekenreeksen die niet door eindgebruikers worden gezien. MBCS is een verouderde technologie en wordt niet aanbevolen voor nieuwe ontwikkeling.

De meest voorkomende MBCS-implementatie is dubbel-bytetekensets (DBCSs). Visual C++ in het algemeen, en MFC in het bijzonder, is volledig ingeschakeld voor DBCS.

Zie de MFC-broncodebestanden voor voorbeelden.

Voor platforms die worden gebruikt in markten waarvan de talen grote tekensets gebruiken, is MBCS het beste alternatief voor Unicode. MFC ondersteunt MBCS met behulp van internationaliseerbare gegevenstypen en C-runtimefuncties. U moet hetzelfde doen in uw code.

Onder MBCS worden tekens gecodeerd in 1 of 2 bytes. In twee byte-tekens signaleert de eerste of leidende byte dat zowel deze als de volgende byte moeten worden geïnterpreteerd als één teken. De eerste byte is afkomstig van een reeks codes die zijn gereserveerd voor gebruik als leadbytes. Welke bytebereiken als leidende bytes kunnen optreden, hangt af van de gebruikte codepagina. Japanse codepagina 932 gebruikt bijvoorbeeld het bereik 0x81 tot en met 0x9F als leadbytes, maar koreaanse codepagina 949 gebruikt een ander bereik.

Houd rekening met het volgende in uw MBCS-programmering.

MBCS-tekens in de omgeving MBCS-tekens kunnen worden weergegeven in tekenreeksen zoals bestands- en mapnamen.

Bewerkingshandelingen

Bewerkingen in MBCS-toepassingen moeten worden uitgevoerd op tekens, niet op bytes. De caret mag geen teken splitsen, de toets Pijl-rechts moet één teken naar rechts gaan, enzovoort. Verwijderen moet een teken verwijderen; Ongedaan maken moet het opnieuw invoegen.

Verwerking van strings

In een toepassing die gebruikmaakt van MBCS, levert de verwerking van tekenreeksen speciale problemen op. Tekens van beide breedten worden in één tekenreeks gemengd, daarom moet u onthouden om te controleren op voorloopbytes.

Ondersteuning voor uitvoeringsbibliotheek

De C-runtimebibliotheek en MFC ondersteunen single-byte-, MBCS- en Unicode-programmering. Tekenreeksen met één byte worden verwerkt met de str reeks runtimefuncties, MBCS-tekenreeksen worden verwerkt met bijbehorende _mbs functies en Unicode-tekenreeksen worden verwerkt met bijbehorende wcs functies. Implementaties van lidfuncties van MFC-klasse gebruiken draagbare runtimefuncties die, onder de juiste omstandigheden, worden toegewezen aan de normale str familie van functies, de MBCS-functies of de Unicode-functies, zoals beschreven in de 'MBCS/Unicode-portabiliteit'.

MBCS/Unicode-portabiliteit

Met behulp van het headerbestand tchar.h kunt u single-byte-, MBCS- en Unicode-toepassingen bouwen uit dezelfde bronnen. Tchar.h definieert macro's met de prefix _tcs, die afhankelijk van de situatie worden toegewezen aan str, _mbs of wcs functies. Als u MBCS wilt bouwen, definieert u het symbool _MBCS. Als u Unicode wilt maken, definieert u het symbool _UNICODE. _UNICODE Standaard is dit gedefinieerd voor MFC-toepassingen. Zie Generic-Text Toewijzingen in tchar.h voor meer informatie.

Opmerking

Gedrag wordt niet gedefinieerd als u zowel _UNICODE als _MBCS definieert.

De headerbestanden Mbctype.h en Mbstring.h definiëren MBCS-specifieke functies en macro's, die u in sommige gevallen nodig hebt. Een voorbeeld hiervan is dat _ismbblead aangeeft of een specifieke byte in een tekenreeks een lead-byte is.

Voor internationale draagbaarheid codeert u uw programma met Unicode - of multibyte-tekensets (MBCSs).

Wat u wilt doen?

Zie ook

Tekst en tekenreeksen
MBCS-ondersteuning in Visual C++