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

Aktualisiert: November 2007

Mehrbyte-Zeichensätze (MBCS) sind eine Alternative zu Unicode für die Unterstützung von Zeichensätzen, die nicht mit einem Byte pro Zeichen dargestellt werden können, z. B. Japanisch und Chinesisch. Bei der Programmierung für den internationalen Markt sollten Sie die Verwendung von Unicode oder MBCS in Betracht ziehen bzw. ein Programm so gestalten, dass Sie mithilfe eines Schalters nach Bedarf eine Unicode- oder eine MBCS-Version erstellen können.

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 Dateinamen, Verzeichnisnamen und vergleichbaren Zeichenfolgen vorkommen.

  • Bearbeitungsvorgänge
    Bearbeitungsvorgänge in MBCS-Anwendungen sollten auf Zeichen und nicht auf Bytes basieren. Von der Einfügemarke sollte kein Zeichen geteilt werden, mit der NACH RECHTS-TASTE sollte man um ein Zeichen nach rechts gelangen usw. Mit dem Befehl Löschen sollte ein Zeichen gelöscht werden; mit dem Befehl Rückgängig sollte dieses Zeichen erneut eingefügt werden.

  • Zeichenfolgenbehandlung
    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. Einzelbyte-Zeichenfolgen werden mit Laufzeitfunktionen der str-Reihe verarbeitet, MBCS-Zeichenfolgen werden mit den entsprechenden _mbs-Funktionen verarbeitet und Unicode-Zeichenfolgen werden mit den 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 Einzelbyte-, MBCS- und Unicode-Anwendungen aus denselben Quellen erstellen. Tchar.h definiert Makros mit dem Präfix _tcs, die je nach Bedarf str-Funktionen, _mbs-Funktionen oder wcs-Funktionen zugeordnet werden. Definieren Sie zur Erstellung von MBCS das _MBCS-Symbol. Definieren Sie zur Erstellung von Unicode das _UNICODE-Symbol. Standardmäßig wird _MBCS für MFC-Anwendungen definiert. Weitere Informationen finden Sie unter Zuordnungen für generischen Text in Tchar.h.

Hinweis:

Wenn Sie sowohl _UNICODE als auch _MBCS definieren, ist das Verhalten nicht definiert.

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 ein Programm international portieren zu können, codieren Sie es mit Unicode oder Mehrbyte-Zeichensätzen (MBCS).

Was möchten Sie tun?

Siehe auch

Konzepte

Zeichensätze in C++

MBCS-Unterstützung in Visual C++