Freigeben über


Unterstützung für Unicode- und Multibyte-Zeichensätze (MBCS)

Einige Sprachen wie Japanisch und Chinesisch haben große Zeichensätze. Zur Unterstützung der Programmierung für diese Märkte ermöglicht die Microsoft Foundation Class Library (MFC) zwei verschiedene Ansätze für die Behandlung großer Zeichensätze:

  • Unicode, wchar_t basierte Breitzeichen und Zeichenfolgen, die als UTF-16 codiert sind.

  • Multibyte-Zeichensätze (MBCS),char basierend auf einzel- oder Doppelbytezeichen und Zeichenfolgen, die in einem gebietsschemaspezifischen Zeichensatz codiert sind.

Hinweis

Microsoft empfiehlt die MFC Unicode-Bibliotheken für alle neuen Entwicklungen.
Die MBCS-Bibliotheken sind in Visual Studio 2013 und Visual Studio 2015 veraltet. Das ist nicht mehr der Fall.
Ab Visual Studio 2017 sind die MBCS-Bibliotheken nicht mehr veraltet und generieren keine Veraltetkeitswarnungen.

MFC-Unterstützung für Unicode-Zeichenfolgen

Die gesamte MFC-Klassenbibliothek ist bedingt für Unicode-Zeichen und Zeichenfolgen aktiviert, die in breiten Zeichen als UTF-16 gespeichert sind. Insbesondere ist die Klasse CString Unicode-aktiviert.

Diese Bibliotheks-, Debugger- und DLL-Dateien werden verwendet, um Unicode in MFC zu unterstützen:

MFC-VersionU.LIB
MFC-VersionUD. LIB
MFCM-VersionU.LIB
MFCM-VersionUD. LIB
MFCS-VersionU.LIB
MFCS-VersionUD. LIB
UAFXCW.LIB
UAFXCWD.LIB

MFC-VersionU.PDB
MFC-VersionUD. PDB
MFCM-VersionU.PDB
MFCM-VersionUD. PDB
MFCS-VersionU.PDB
MFCS-VersionUD. PDB
UAFXCW.PDB
UAFXCWD.PDB

MFC-VersionU.DLL
MFC-VersionUD.DLL
MFCM-VersionU.DLL
MFCM-VersionUD.DLL

(Version stellt die Versionsnummer der Datei dar, z. B. "140" bedeutet Version 14.0.)

CString basiert auf dem TCHAR Datentyp. Wenn das Symbol _UNICODE für einen Build Ihres Programms definiert ist, TCHAR wird er als Typ wchar_tdefiniert, ein 16-Bit-Zeichencodierungstyp. TCHAR Andernfalls ist die charnormale 8-Bit-Zeichencodierung definiert. Daher setzt sich ein CString unter Unicode aus 16-Bit-Zeichen zusammen. Ohne Unicode besteht es aus Zeichen vom Typ char.

Um Unicode-Programmierung der Anwendung durchzuführen, benötigen Sie auch Folgendes:

  • Verwenden Sie das _T Makro, um literale Zeichenfolgen bedingt zu codieren, um in Unicode portierbar zu sein.

  • Wenn Sie Zeichenfolgen übergeben, achten Sie darauf, ob für Funktionsargumente eine bestimmte Länge in Zeichen oder in Bytes erforderlich. Der Unterschied ist wichtig, wenn Sie Unicode-Zeichenfolgen verwenden.

  • Verwenden Sie portable Versionen der C-Funktionen zur Behandlung von Zeichenfolgen zur Laufzeit.

  • Verwenden Sie die folgenden Datentypen für Zeichen und Zeichenzeiger:

    • Verwenden Sie TCHAR die Stelle, an der Sie verwenden charwürden.

    • Verwenden Sie LPTSTR die Stelle, an der Sie verwenden char*würden.

    • Verwenden Sie LPCTSTR die Stelle, an der Sie verwenden const char*würden. CString stellt den Operator LPCTSTR zum Konvertieren zwischen CString und LPCTSTR.

CString stellt außerdem Unicode-kompatible Konstruktoren, Zuweisungsoperatoren und Vergleichsoperatoren bereit.

Die Laufzeitbibliotheksreferenz definiert portable Versionen aller Zeichenfolgenbehandlungsfunktionen. Weitere Informationen finden Sie in der Kategorie Internationalisierung.

MFC-Unterstützung für MBCS-Zeichenfolgen

Die Klassenbibliothek wird auch für Multibyte-Zeichensätze, jedoch nur für Doppelbyte-Zeichensätze (DBCS) aktiviert.

In einem Multibyte-Zeichensatz kann ein Zeichen ein oder 2 Byte breit sein. Wenn es 2 Byte breit ist, ist das erste Byte ein spezielles "Leadbyte", das aus einem bestimmten Bereich ausgewählt wird, je nachdem, welche Codepage verwendet wird. Zusammen angewendet, geben die führenden und die "nachfolgenden Bytes" eine eindeutige Zeichencodierung an.

Wenn das Symbol _MBCS für einen Build Ihres Programms definiert ist, geben Sie TCHARdas Symbol ein, auf dem CString basiert, zugeordnet char. Es liegt an Ihnen, zu bestimmen, welche Bytes in einem CString Leadbyte sind und welche Trailbytes sind. Die Zubehörfunktionen der C-Laufzeitbibliothek unterstützen Sie dabei.

Unter DBCS kann eine angegebene Zeichenfolge alle Einzelbyte-ANSI-Zeichen, alle Doppelbytezeichen oder eine Kombination der beiden enthalten. Diese Methoden erfordern besondere Sorgfalt beim Parsen von Zeichenfolgen. Hierzu gehören CString-Objekte.

Hinweis

Mit der Serialisierung von Unicode-Zeichenfolgen in MFC können sowohl Unicode als auch MBCS-Zeichenfolgen unabhängig von der Version der Anwendung, die Sie ausführen, gelesen werden. Die Datendateien sind zwischen Unicode- und MBCS-Versionen des Programms übertragbar.

CString-Memberfunktionen verwenden spezielle Versionen der C-Laufzeitfunktionen mit "generischem Text", die aufgerufen werden, oder sie verwenden Unicode-kompatible Funktionen. Wenn daher eine CString-Funktion normalerweise strcmp aufrufen würde, ruft sie stattdessen die entsprechende Funktion _tcscmp für generischen Text auf. Je nachdem, wie die Symbole _MBCS definiert sind und _UNICODE wie folgt zugeordnet _tcscmp werden:

Sonderzeichen Funktion
_MBCS definiert _mbscmp
_UNICODE definiert wcscmp
Kein Symbol definiert strcmp

Hinweis

Die Symbole _MBCS schließen _UNICODE sich gegenseitig aus.

Generische Funktionszuordnungen für alle Laufzeit-Zeichenfolgenbehandlungsroutinen werden in der C-Laufzeitbibliotheksreferenz erläutert. Eine Liste finden Sie unter "Internationalisierung".

CString Ebenso werden Methoden mithilfe generischer Datentypzuordnungen implementiert. Um MBCS und Unicode zu aktivieren, verwendet TCHAR MFC für char oder , LPTSTR für oder wchar_t, für char* oder wchar_t*LPCTSTR für oder const wchar_t*. const char* . Diese stellen die richtigen Zuordnungen für Unicode oder MBCS sicher.

Weitere Informationen

Zeichenfolgen (ATL/MFC)
Zeichenfolgenbearbeitung