Double-Byte-Zeichensätze
Ein Double-Byte-Zeichensatz (DBCS), auch als "erweiterter 8-Bit-Zeichensatz" bezeichnet, ist ein erweiterter Single-Byte-Zeichensatz (SBCS), der als Codepage implementiert wird. DBCSs wurden ursprünglich entwickelt, um das SBCS-Design auf Sprachen wie Japanisch und Chinesisch zu erweitern. Einige Zeichen in einem DBCS, einschließlich der Ziffern und Buchstaben, die zum Schreiben von Englisch verwendet werden, verfügen über Ein-Byte-Codewerte. Andere Zeichen, z. B. chinesische Ideographen oder japanische Kanji, haben Doppelbyte-Codewerte. Ein DBCS kann entweder einer Windows-Codepage oder einer OEM-Codepage entsprechen. Eine DBCS-Codepage kann auch eine nicht native Codepage enthalten, z. B. eine EBCDIC-Codepage. Definitionen dieser Codepages finden Sie unter CodePages.
Hinweis
Neue Windows-Anwendungen sollten Unicode verwenden, um die Inkonsistenzen verschiedener Codepages zu vermeiden und die Lokalisierung zu vereinfachen. Einige Ältere Protokolle erfordern jedoch möglicherweise die Verwendung von DBCS-Codepages. Jede DBCS-Codepage unterstützt unterschiedliche Zeichen, aber keine Seite unterstützt die gesamte Breite der von Unicode bereitgestellten Zeichen. Jede DBCS-Codepage unterstützt eine andere Teilmenge, die unterschiedlich codiert ist. Daten, die von einer DBCS-Codepage in eine andere konvertiert werden, unterliegen einer Beschädigung, da derselbe Datenwert auf verschiedenen Codepages ein anderes Zeichen codieren kann. Daten, die aus Unicode in DBCS konvertiert werden, unterliegen Datenverlust, da eine bestimmte Codepage möglicherweise nicht jedes Zeichen darstellen kann, das in diesen bestimmten Unicode-Daten verwendet wird.
Um eine DBCS-Zeichenfolge zu interpretieren, muss eine Anwendung am Anfang der Zeichenfolge beginnen und vorwärts scannen. Es wird nachverfolgt, wenn es auf ein Leadbyte in der Zeichenfolge trifft, und behandelt das nächste Byte als den nachfolgenden Teil desselben Zeichens. Wenn die Anwendung die Zeichenfolge einfach ein Byte nach dem anderen scannt und auf ein Byte stößt, das den Codewert darstellt, der einen umgekehrten Schrägstrich ("\") darstellt, kann dieses Byte einfach das Trail-Byte eines Zwei-Byte-Zeichens sein. Die Anwendung kann nicht einfach ein Byte sichern, um festzustellen, ob das vorangehende Byte ein Leadbyte ist, da dieser Bytewert sowohl als Lead- als auch als Trail-Byte verwendet werden kann. Die Anwendung hat also im Wesentlichen das gleiche Problem damit wie mit dem möglichen umgekehrten Schrägstrich. Anders ausgedrückt: Die Suche nach Teilzeichenfolgen ist mit einem DBCS viel komplizierter als mit SBCSs oder Unicode. Dementsprechend müssen Anwendungen, die einen DBCS unterstützen, spezielle Funktionen wie _mbsstr anstelle der StrStr-Funktion verwenden.
Ihre Anwendungen verwenden DBCS-Windows-Codepages mit den "A"-Versionen von Windows-Funktionen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen und Codepages. Um eine DBCS-Codepage zu identifizieren, kann eine Anwendung die GetCPInfo - oder GetCPInfoEx-Funktion verwenden. Eine Anwendung kann die IsDBCSLeadByte-Funktion verwenden, um zu bestimmen, ob ein gegebener Wert als Leadbyte eines 2-Byte-Zeichens verwendet werden kann. Darüber hinaus kann eine Anwendung die Funktionen MultiByteToWideChar und WideCharToMultiByte verwenden, um unicode- und DBCS-Zeichenfolgen zuzuordnen.
Zugehörige Themen