Unterstützung für Unicode

Unicode ist eine Spezifikation für die Unterstützung aller Zeichensätze, einschließlich der Zeichensätze, die nicht in einem einzelnen Byte dargestellt werden können. Wenn Sie für einen internationalen Markt programmieren, empfehlen wir Ihnen die Verwendung von Unicode oder einem Multibyte-Zeichensatz (MBCS). Oder codieren Sie Ihr Programm so, dass Sie es entweder durch Ändern eines Schalters erstellen können.

Ein Breitzeichen ist ein mehrsprachiger 2-Byte-Zeichencode. Zehntausend Zeichen, bestehend aus fast allen Zeichen, die weltweit in der modernen Computer verwendet werden, einschließlich technischer Symbole und Sonderveröffentlichungszeichen, können gemäß der Unicode-Spezifikation als einzelnes breites Zeichen dargestellt werden, das mit UTF-16 codiert ist. Zeichen, die nicht in nur einem breiten Zeichen dargestellt werden können, können in einem Unicode-Paar mithilfe des Unicode-Ersatzpaarfeatures dargestellt werden. Da fast jedes Zeichen in der gemeinsamen Verwendung in UTF-16 in einem einzelnen 16-Bit-Breitenzeichen dargestellt wird, vereinfacht die Verwendung von breiten Zeichen die Programmierung mit internationalen Zeichensätzen. Wide characters encoded using UTF-16LE (for little-endian) are the native character format for Windows.

Eine Breitzeichenzeichenfolge wird als wchar_t[]-Array dargestellt, auf das mit einem wchar_t*-Zeiger gezeigt wird. Jedes ASCII-Zeichen kann als Breitzeichen dargestellt werden, indem der Buchstabe L dem Zeichen vorangestellt wird. L'\0' ist beispielsweise das abschließende (16-Bit) NULL-Breitzeichen. Auf ähnliche Weise kann jedes ASCII-Zeichenfolgenliteral als Breitzeichen-Zeichenfolgenliteral dargestellt werden, indem der Buchstabe L dem ASCII-Literal vorangestellt wird (L"Hello").

Im Allgemeinen benötigen Breitzeichen mehr Platz im Arbeitsspeicher als Multibytezeichen, werden aber schneller verarbeitet. Darüber hinaus kann jeweils nur ein Gebietsschema in einer Multibyte-Codierung dargestellt werden, während alle Zeichensätze in der Welt gleichzeitig durch die Unicode-Darstellung dargestellt werden.

Das MFC-Framework ist komplett Unicode-fähig, und MFC erreicht die Unicode-Fähigkeit durch die Verwendung von portablen Makros, die in der folgenden Tabelle gezeigt sind.

Portable Datentypen in MFC

Nicht portable Datendatentypen Ersetzt durch dieses Makro
char, wchar_t _TCHAR
char*, LPSTR (Win32-Datentyp), LPWSTR LPTSTR
const char*, LPCSTR (Win32-Datentyp), LPCWSTR LPCTSTR

Klasse CString verwendet _TCHAR als Basis und stellt Konstruktoren und Operatoren für einfache Konvertierungen bereit. Die meisten Zeichenfolgenvorgänge für Unicode können durch dieselbe Logik geschrieben werden, die für die Verarbeitung des Windows-ANSI-Zeichensatzes verwendet wird, mit der Ausnahme, dass die grundlegende Einheit für Vorgänge ein 16-Bit-Zeichen anstelle eines 8-Bit-Zeichens ist. Im Gegensatz zur Arbeit mit Multibytezeichensätzen müssen (und sollten) Sie ein Unicode-Zeichen nicht behandeln, als bestünde es aus zwei unterschiedlichen Bytes. Sie müssen jedoch mit der Möglichkeit eines einzelnen Zeichens umgehen, das durch ein Ersatzpaar von breiten Zeichen dargestellt wird. Schreiben Sie im Allgemeinen keinen Code, der davon ausgeht, dass die Länge einer Zeichenfolge mit der Anzahl von Zeichen identisch ist, unabhängig davon, ob sie schmal oder breit ist.

Wie möchten Sie vorgehen?

Siehe auch

Text und Zeichenfolgen
Unterstützung für die Verwendung von wmain