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
_mbs
den entsprechenden Funktionen oder wcs
Funktionen zugeordnet sind. Definieren Sie zur Erstellung von MBCS das _MBCS
-Symbol. Definieren Sie zur Erstellung von Unicode das _UNICODE
-Symbol. 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?
Verwenden von MBCS zum Erstellen eines internationalisierten Programms
Informationen zu generischen Textzuordnungen für die Portabilität von Bytebreiten