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 Caretzeichen sollte kein Zeichen teilen, die NACH-RECHTS-TASTE sollte um ein Zeichen nach rechts bewegt werden, und so weiter. Beim Löschen sollte ein Zeichen gelöscht werden. Rückgängig sollte es erneut einbeaten.

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. Einzelbytezeichenfolgen werden mit der Familie der Laufzeitfunktionen verarbeitet, MBCS-Zeichenfolgen werden mit entsprechenden Funktionen verarbeitet, und Unicode-Zeichenfolgen werden mit entsprechenden str_mbs Funktionen wcs 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

Mithilfe 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 den Funktionen , oder entsprechend _mbswcs zuordnen. 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 sowohl als auch _UNICODE_MBCS definieren.

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.

Um internationale Portabilität zu gewährleisten, programmieren Sie Ihr Programm mit Unicode- oder Multibyte-Zeichensätzen (MBCSs).

Wie möchten Sie vorgehen?

Siehe auch

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