Codeseiten
Die meisten anwendungen, die heute geschrieben wurden, verarbeiten Zeichendaten hauptsächlich als Unicode-, wobei die UTF-16-Codierung verwendet wird. Viele Legacyanwendungen 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 älteren Anwendungen.
- 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 älteren Zwecken. (Die Konsole unterstützt Unicode, aber einige ältere Befehlszeilenanwendungstools sind möglicherweise nicht vorhanden.)
Anmerkung
Neue Windows-Anwendungen sollten Unicode- verwenden, um die Inkonsistenzen unterschiedlicher Codeseiten zu vermeiden und die Lokalisierung zu vereinfachen.
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 Code Page Identifiers. 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 unter Windows NT und höher verfügbar.
Anmerkung
Ursprünglich basiert die Codepage 1252, die häufig für Englisch und andere westeuropäische Sprachen verwendete Codepage auf einem ANSI-Entwurf (American National Standards Institute). Dieser Entwurf wurde schließlich ZU ISO 8859-1, aber Windows-Codepage 1252 wurde implementiert, bevor der Standard endgültig wurde und nicht genau mit ISO 8859-1 identisch ist.
Viele Windows-API-Funktionen verfügen über "A"- (ANSI)- und "W"-Versionen (breit, Unicode). Die "A"-Version 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 derzeit aktive Windows-Codeseite. Alle ANSI-Versionen von API-Funktionen die aktuell aktive Codeseite verwenden.
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 Dateisystemen FAT12, FAT16 und FAT32 verwendet, wie in Zeichensätze in Dateinamenbeschrieben. Die übliche OEM-Codeseite für Englisch ist Codepage 437.
Für Windows-Codeseiten und OEM-Codeseiten entsprechen die Codewerte 0x00 bis 0x7F dem 7-Bit-ASCII-Zeichensatz. Codewerte 0x00 durch 0x19 und 0x7F stellen immer standardisierte Steuerzeichen dar und 0x20 durch 0x7E standardisierte anzeigefähige Zeichen darstellen. Zeichen, die durch die verbleibenden Codes dargestellt werden, 0x80 bis 0xff, variieren zwischen Zeichensätzen. Jeder Zeichensatz enthält unterschiedliche Sonderzeichen, die in der Regel für eine Sprache oder Eine Gruppe von Sprachen angepasst wurden. Windows-Codepage 1252 und OEM-Codepage 437 werden in den USA in der Regel verwendet.
Zusätzlich zu Windows- und OEM-Codeseiten können Ihre Anwendungen nicht systemeigene Codeseiten verwenden. Beispiele sind EBCDIC- und Macintosh-Codeseiten.
Zwei Codierungen von Unicode (UTF-7 und UTF-8) werden als Codeseiten implementiert. Wie andere Codeseiten ist jede Seite durch einen numerischen Bezeichner bekannt und kann mit vielen der gleichen Unicode- und Zeichensatz-API-Funktionen behandelt werden.
Codeseiten können entweder Single-Byte-Zeichensatz Seiten (SBCS) oder Doppelbyte-Zeichensatz (DBCS)-Seiten sein. Auf SBCS-Seiten codiert jedes Byte direkt ein einzelnes Zeichen, sodass es möglich ist, genau 256 unterschiedliche Zeichen darzustellen (einschließlich Steuerzeichen, Buchstaben, Ziffern, Satzzeichen, Symbole und ähnliches). DBCS-Codeseiten werden für Sprachen wie Japanisch und Chinesisch verwendet. Auf einer solchen Codeseite verfügen einige Zeichen über Zwei-Byte-Codierungen mit bestimmten Bytewerten (immer Werte größer als 127), die als "Leadbytes" dienen. Anstelle von Codierungszeichen auf eigene Faust 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 gesamte Breite von Zeichen, die von Unicode bereitgestellt werden. Jede SBCS/DBCS-Codeseite unterstützt eine andere Teilmenge, anders codiert.
Anmerkung
Daten, die von einer SBCS- oder DBCS-Codeseite in eine andere konvertiert werden, unterliegen Beschädigungen, 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 ist, jedes zeichen darzustellen, das in diesen bestimmten Unicode-Daten verwendet wird.
Zusätzlich zu SBCS- und DBCS-Codeseiten haben Ihre Anwendungen die Multibyte-Zeichensatzcodeseiten 52936, 54936, 51949 und 5022x verfügbar, die einen Ansatz verwenden, der dem für einen DBCS ähnlich ist. Eine Multibyte-Zeichensatz-Codeseite geht jedoch über zwei Byte-Codierungen einiger Zeichen hinaus. UTF-7 und UTF-8 verwenden einen ähnlichen Ansatz, um Unicode basierend auf einer 7-Bit- bzw. 8-Bit-Byte zu codieren. Weitere Informationen finden Sie unter Unicode-.
Mit mehreren Unicode- und Zeichensatzfunktionen können Ihre Anwendungen Codeseiten verarbeiten. Eine Anwendung kann die GetCPInfo- und GetCPInfoEx- Funktionen 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 MultiByteToWideChar- und WideCharToMultiByte- Funktionen verwenden, um zwischen Zeichenfolgen basierend auf Windows-Codeseiten und Unicode-Zeichenfolgen zu konvertieren. Obwohl ihre Namen auf "MultiByte" verweisen, funktionieren diese Funktionen gleichermaßen gut mit SBCS-, DBCS- und Multibyte-Zeichensatz-Codeseiten.
Anmerkung
WideCharToMultiByte- kann einige Daten verlieren, wenn die angegebene Codeseite nicht alle Zeichen in einer Unicode-Zeichenfolge darstellen kann.
Ihre Anwendung kann mithilfe der standardmäßigen C-Laufzeitbibliotheksfunktionen zwischen Windows-Codeseiten und OEM-Codeseiten 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 exakt übereinstimmen.
Ihre Anwendungen können auch die GetACP--Funktion aufrufen. Diese Funktion ruft den Bezeichner der aktuellen Windows-Codeseite (ANSI) ab.
Verwandte Themen