Codepages

Die meisten Anwendungen, die heute geschrieben wurden, behandeln Zeichendaten hauptsächlich als Unicode, wobei die UTF-16-Codierung verwendet wird. Viele ältere Anwendungen verwenden jedoch weiterhin Zeichensätze basierend auf Codeseiten. Auch neue Anwendungen müssen manchmal mit Codeseiten arbeiten, häufig aus einem der folgenden Gründe:

  • So kommunizieren Sie mit Legacyanwendungen.
  • Um mit älteren E-Mail- und Newsservern zu kommunizieren, die unicode möglicherweise nicht immer unterstützen.
  • So kommunizieren Sie mit der Windows Konsole zu Legacyzwecken. (Die Konsole unterstützt Unicode, aber einige ältere Befehlszeilenanwendungstools sind möglicherweise nicht vorhanden.)

Hinweis

Neue Windows Anwendungen sollten Unicode verwenden, um die Inkonsistenzen unterschiedlicher Codeseiten und eine einfache Lokalisierung zu vermeiden.

 

Jede Codeseite wird durch einen Codeseitenbezeichner dargestellt, z. B. 1252, und wird von den Unicode- und Zeichensatz-API-Funktionen behandelt. Eine Liste der unterstützten Codeseitenbezeichner finden Sie unter Codeseitenbezeichner. Die Referenz "Codeseiten" im Microsoft Go Global Developer Center enthält vollständige Beschreibungen vieler Codeseiten.

Windows Codeseiten, die häufig als "ANSI-Codeseiten" bezeichnet werden, sind Codeseiten, für die Nicht-ASCII-Werte (Werte größer als 127) internationale Zeichen darstellen. Diese Codeseiten werden nativ in Windows Me verwendet und sind auch auf Windows NT und höher verfügbar.

Hinweis

Ursprünglich basiert Windows Codeseite 1252 auf der Codeseite, die häufig für Englisch und andere westliche europäische Sprachen verwendet wird, auf einem ANSI-Entwurf (American National Standards Institute). Dieser Entwurf wurde schließlich ISO 8859-1, aber Windows Codeseite 1252 wurde implementiert, bevor der Standard abgeschlossen wurde, und ist nicht genau identisch mit ISO 8859-1.

 

Viele Windows API-Funktionen verfügen über "A" (ANSI)- und "W"-Versionen (breit, Unicode). Die Version "A" behandelt Text basierend auf Windows Codeseiten, während die "W"-Version Unicode-Text behandelt. Siehe Windows Datentypen für Zeichenfolgen und Konventionen für Funktionsprototypen.

Windows Codeseiten werden manchmal auch als "aktive Codeseiten" oder "systemaktive Codeseiten" bezeichnet. Ein Windows Betriebssystem verfügt immer über eine aktuell aktive Windows Codeseite. Alle ANSI-Versionen von API-Funktionen verwenden die aktuell aktive Codeseite.

Originalgerätehersteller (OEM)-Codeseiten sind Codeseiten, für die Nicht-ASCII-Werte Linienzeichnungs- und Interpunktionszeichen darstellen. Diese Codeseiten wurden ursprünglich für MS-DOS verwendet und werden weiterhin für Konsolenanwendungen verwendet. Sie werden auch für die nicht erweiterten Dateinamen in den FAT12-, FAT16- und FAT32-Dateisystemen verwendet, wie in Zeichensätzen beschrieben, die in Dateinamen verwendet werden. Die übliche OEM-Codeseite für Englisch ist die Codeseite 437.

Für Windows Codeseiten und OEM-Codeseiten entsprechen die Codewerte 0x00 bis 0x7F dem 7-Bit-ASCII-Zeichensatz. Codewerte 0x00 bis 0x19 und 0x7F stellen immer standardisierte Steuerzeichen dar und 0x20 durch 0x7E standardisierte anzeigebare Zeichen darstellen. Zeichen, die durch die verbleibenden Codes dargestellt werden, 0x80 bis 0xff variieren zwischen Zeichensätzen. Jeder Zeichensatz enthält verschiedene Sonderzeichen, die in der Regel für eine Sprache oder Eine Gruppe von Sprachen angepasst werden. Windows Codeseite 1252 und OEM-Codeseite 437 werden in der Regel im USA verwendet.

Zusätzlich zu Windows- und OEM-Codeseiten können Ihre Anwendungen nicht native Codeseiten verwenden. Beispiele sind EBCDIC- und Macintosh-Codeseiten.

Zwei Codierungen von Unicode (UTF-7 und UTF-8) werden als Codeseiten implementiert. Wie andere Codeseiten wird jede Seite von einem numerischen Bezeichner bekannt und kann mit vielen der gleichen Unicode- und Zeichensatz-API-Funktionen behandelt werden.

Codeseiten können entweder Ein-Byte-Zeichensatzseiten (SBCS)-Seiten oder DbCS-Seiten (Double-Byte-Zeichensatz ) sein. Auf SBCS-Seiten codiert jedes Byte direkt ein einzelnes Zeichen, sodass es möglich ist, genau 256 unterschiedliche Zeichen darzustellen (einschließlich Steuerelementzeichen, Buchstaben, Ziffern, Interpunktionszeichen, Symbole und ähnlichem). DBCS-Codeseiten werden für Sprachen wie Japanisch und Chinesisch verwendet. Bei einer solchen Codeseite verfügen einige Zeichen über zwei Bytecodierungen mit bestimmten Bytewerten (immer Werte größer als 127), die als "Lead bytes" dienen. Anstatt Zeichen in ihrem eigenen Recht zu codieren, können Leadbytes nur in Verbindung mit einem "Trail byte" einem Zeichen zugeordnet werden.

Einige Legacyprotokolle erfordern die Verwendung von SBCS- und DBCS-Codeseiten. Jede SBCS/DBCS-Codeseite unterstützt unterschiedliche Zeichen, aber keine Codeseite unterstützt die vollständige Breite der Zeichen, die von Unicode bereitgestellt werden. Jede SBCS/DBCS-Codeseite unterstützt eine andere Teilmenge, anders codiert.

Hinweis

Daten, die von einer SBCS- oder DBCS-Codeseite in eine andere konvertiert werden, unterliegen einer Beschädigung, da derselbe Datenwert auf verschiedenen Codeseiten ein anderes Zeichen codieren kann. Daten, die von Unicode in SBCS oder DBCS konvertiert werden, unterliegen Datenverlust, da eine bestimmte Codeseite möglicherweise nicht in der Lage sein kann, jedes zeichen darzustellen, das in diesen bestimmten Unicode-Daten verwendet wird.

 

Neben SBCS- und DBCS-Codeseiten haben Ihre Anwendungen die Multibyte-Zeichensatz-Codeseiten 52936, 54936, 51949 und 5022x zur Verfügung, die einen Ansatz wie für einen DBCS verwenden. Eine Multibyte-Zeichensatz-Codeseite geht jedoch über zwei Bytecodierungen einiger Zeichen hinaus. UTF-7 und UTF-8 verwenden einen ähnlichen Ansatz zum Codieren von Unicode basierend auf einem 7-Bit- und 8-Bit-Bytes. Weitere Informationen finden Sie unter Unicode.

Mehrere Unicode- und Zeichensatzfunktionen ermöglichen es Ihren Anwendungen, Codeseiten zu verarbeiten. Eine Anwendung kann die Funktionen GetCPInfo und GetCPInfoEx verwenden, um Informationen zu einer Codeseite abzurufen. Diese Informationen enthalten das Standardzeichen, das verwendet wird, wenn ein Zeichen in einer konvertierten Zeichenfolge keinen entsprechenden Eintrag auf der Codeseite aufweist.

Eine Anwendung kann die Funktionen MultiByteToWideChar und WideCharToMultiByte verwenden, um zwischen Zeichenfolgen basierend auf Windows Codeseiten und Unicode-Zeichenfolgen zu konvertieren. Obwohl ihre Namen auf "MultiByte" verweisen, funktionieren diese Funktionen ebenso gut mit SBCS-, DBCS- und Multibyte-Zeichensatz-Codeseiten.

Hinweis

WideCharToMultiByte kann einige Daten verlieren, wenn die angegebene Codeseite nicht alle Zeichen in einer Unicode-Zeichenfolge darstellen kann.

 

Ihre Anwendung kann zwischen Windows Codeseiten und OEM-Codeseiten mithilfe der standardmäßigen C-Laufzeitbibliotheksfunktionen konvertieren. Die Verwendung dieser Funktionen stellt jedoch ein Risiko für Datenverlust dar, da die Zeichen, die durch jede Codeseite dargestellt werden können, nicht genau übereinstimmen.

Ihre Anwendungen können auch die GetACP-Funktion aufrufen. Diese Funktion ruft den Bezeichner der aktuellen Windows (ANSI)-Codeseite ab.

Zeichensätze