Unterstützung von Mehrbyte-Zeichensätzen (MBCS)

Mehrbyte-Zeichensätze (MBCS) sind ein älterer Ansatz, mit dem die erforderliche Unterstützung von Zeichensätzen sichergestellt wird, die nicht mit einem Byte pro Zeichen dargestellt werden können, z. B. Japanisch und Chinesisch. Wenn Sie Neuentwicklungen ausführen, sollten Sie Unicode für alle Textzeichenfolgen außer Systemzeichenfolgen verwenden, die nicht für die Endbenutzer sichtbar sind. MBCS ist eine ältere Technologie und wird nicht für Neuentwicklungen empfohlen.

Bei den gängigsten MBCS-Implementierungen handelt es sich um Doppelbyte-Zeichensätze (DBCS). Visual C++ im Allgemeinen und MFC im Besonderen sind vollständig DBCS-aktiviert.

Beispiele finden Sie in den MFC-Quellcodedateien.

Für Plattformen, die in Ländern mit umfangreichen Zeichensätzen verwendet werden, stellt MBCS die beste Alternative zu Unicode dar. MFC unterstützt MBCS durch Verwendung internationalisierbarer Datentypen und C-Laufzeitfunktionen. Es empfiehlt sich, im Code ebenso vorzugehen.

Unter MBCS werden Zeichen in ein oder zwei Bytes codiert. In zwei Bytes breiten Zeichen zeigt das erste oder führende Byte an, dass es selbst und das nächste Byte als ein einziges Zeichen zu interpretieren sind. Das erste Byte stammt aus einem Bereich mit Codes, die zur Verwendung als führende Bytes reserviert sind. Welche Bytebereiche als führende Bytes verwendet werden können, hängt von der jeweils verwendeten Codepage ab. Von der japanischen Codepage 932 wird z. B. der Bereich von 0 x 81 bis 0 x 9 F für führende Bytes verwendet, während von der koreanischen Codepage 949 hierfür ein anderer Bereich verwendet wird.

Beachten Sie bei der MBCS-Programmierung alle der nachfolgenden Punkte.

MBCS-Zeichen in der Umgebung MBCS-Zeichen können in Zeichenfolgen wie Datei- und Verzeichnisnamen angezeigt werden.

Bearbeitungsvorgänge

Bearbeitungsvorgänge in MBCS-Anwendungen sollten auf Zeichen und nicht auf Bytes basieren. Das Caret sollte kein Zeichen teilen, die NACH-RECHTS-TASTE sollte ein Zeichen nach rechts verschieben usw. Löschen sollte ein Zeichen löschen; Rückgängig : Es sollte erneut eingefügt werden.

String-Verarbeitung

In Anwendungen, die MBCS verwenden, wirft die Behandlung von Zeichenfolgen besondere Probleme auf. Da dieselbe Zeichenfolge breite und normale Zeichen enthalten kann, sind unbedingt Überprüfungen auf führende Bytes vorzusehen.

Unterstützung der Laufzeitbibliothek

Die C-Laufzeitbibliothek und MFC unterstützen die Einzelbyte-, MBCS- und Unicode-Programmierung. Single-Byte-Zeichenfolgen werden mit der str Familie der Laufzeitfunktionen verarbeitet, MBCS-Zeichenfolgen werden mit entsprechenden _mbs Funktionen verarbeitet, und Unicode-Zeichenfolgen werden mit entsprechenden wcs Funktionen verarbeitet. In Implementierungen von Memberfunktionen der MFC-Klasse werden portable Laufzeitfunktionen verwendet, die unter den richtigen Voraussetzungen der normalen str-Funktionsreihe, den MBCS-Funktionen oder den Unicode-Funktionen zugeordnet werden, wie unter "MBCS/Unicode-Portabilität" beschrieben.

MBCS/Unicode-Portabilität

Mit der Headerdatei "tchar.h" können Sie Single-Byte-, MBCS- und Unicode-Anwendungen aus denselben Quellen erstellen. Tchar.h definiert Makros mit dem Präfix _tcs , die str_mbsden entsprechenden Funktionen zugeordnet sindwcs. Definieren Sie zur Erstellung von MBCS das _MBCS-Symbol. Um Unicode zu erstellen, definieren Sie das Symbol _UNICODE. Standardmäßig wird _UNICODE für MFC-Anwendungen definiert. Weitere Informationen finden Sie unter Generic-Text Mappings in tchar.h.

Hinweis

Das Verhalten ist nicht definiert, wenn Sie beide _UNICODE und _MBCS.

Von den Headerdateien Mbctype.h und Mbstring.h werden MBCS-spezifische Funktionen und Makros definiert, die in bestimmten Fällen benötigt werden. Mit _ismbblead können Sie z. B. ermitteln, ob ein bestimmtes Byte einer Zeichenfolge ein führendes Byte ist.

Codieren Sie Ihr Programm für internationale Portabilität mit Unicode - oder Multibyte-Zeichensätzen (MBCSs).

Wie möchten Sie vorgehen?

Siehe auch

Text und Zeichenfolgen
MBCS-Unterstützung in Visual C++