Unicode

Unicode ist ein weltweiter Zeichencodierungsstandard. Das System verwendet Unicode ausschließlich für die Zeichen- und Zeichenfolgenbearbeitung. Eine ausführliche Beschreibung aller Aspekte von Unicode finden Sie unter Der Unicode-Standard.

Im Vergleich zu älteren Mechanismen für die Behandlung von Zeichen- und Zeichenfolgendaten vereinfacht Unicode die Softwarelokalisierung und verbessert die mehrsprachige Textverarbeitung. Indem Sie Unicode verwenden, um Zeichen- und Zeichenfolgendaten in Ihren Anwendungen darzustellen, können Sie universelle Datenaustauschfunktionen für globales Marketing aktivieren, indem Sie eine einzelne Binärdatei für jeden möglichen Zeichencode verwenden. Unicode führt folgende Schritte aus:

  • Ermöglicht, dass jede Kombination von Zeichen, die aus einer beliebigen Kombination von Skripts und Sprachen gezeichnet werden, in einem einzigen Dokument vorhanden ist.
  • Definiert Semantik für jedes Zeichen.
  • Standardisiert das Skriptverhalten.
  • Stellt einen Standardalgorithmus für bidirektionalen Text bereit.
  • Definiert Kreuzzuordnungen zu anderen Standards.
  • Definiert mehrere Codierungen des einzelnen Zeichensatzes: UTF-7, UTF-8, UTF-16 und UTF-32. Die Konvertierung von Daten zwischen diesen Codierungen ist verlustfrei.

Unicode unterstützt zahlreiche Skripts, die von Sprachen auf der ganzen Welt verwendet werden, sowie eine große Anzahl von technischen Symbolen und Sonderzeichen, die bei der Veröffentlichung verwendet werden. Zu den unterstützten Skripts zählen unter anderem Lateinisch, Griechisch, Kyrillisch, Hebräisch, Arabisch, Devanagari, Thai, Han, Hangul, Hiragana und Katakana. Unterstützte Sprachen sind u. a. Deutsch, Französisch, Englisch, Griechisch, Russisch, Hebräisch, Arabisch, Hindi, Thai, Chinesisch, Koreanisch und Japanisch. Unicode kann derzeit die große Mehrheit der Zeichen in der modernen Computerverwendung auf der ganzen Welt darstellen und wird weiterhin aktualisiert, um sie noch vollständiger zu gestalten.

Unicode-fähige Funktionen werden unter Konventionen für Funktionsprototypenbeschrieben. Diese Funktionen verwenden die UTF-16-Codierung (Breitzeichencodierung), die die gängigste Codierung von Unicode und die für die native Unicode-Codierung auf Windows Betriebssystemen verwendet wird. Jeder Codewert ist 16 Bit breit, im Gegensatz zum älteren Codepageansatz für Zeichen- und Zeichenfolgendaten, der 8-Bit-Codewerte verwendet. Die Verwendung von 16 Bits ermöglicht die direkte Codierung von 65.536 Zeichen. Tatsächlich ist das Universe der Symbole, die zum Transkribieren von menschlichen Sprachen verwendet werden, noch größer, und UTF-16-Codepunkte im Bereich U+D800 bis U+DFFF werden verwendet, um Ersatzzeichenpaare zu bilden, die 32-Bit-Codierungen ergänzender Zeichen bilden. Weitere Informationen finden Sie unter Ersatzzeichen und ergänzende Zeichen.

Der Unicode-Zeichensatz enthält zahlreiche Kombinationszeichen, z.B. U+0308 ("oa"), eine kombinationsende Dieresis oder umlaut. Unicode kann häufig das gleiche Symbol entweder in einer Form "'composed'" oder ''decomposed'' darstellen: Die zusammengesetzte Form von "Ä" ist beispielsweise der einzelne Unicode-Codepunkt "Ä" (U+00C4), während die zerlegte Form "A" + " sstelle" ist (U+0041 U+0308). Unicode definiert kein zusammengesetztes Formular für jedes Glyphen. Beispielsweise wird der "o"-Kleinbuchstabe "o" mit Umfangsflex und Tilde ("ỗ") durch U+006f U+0302 U+0303 (o + Klammer + Tilde) dargestellt. Weitere Informationen zum Kombinieren von Zeichen und verwandten Problemen finden Sie unter Verwenden der Unicode-Normalisierung zum Darstellen von Zeichenfolgen.

Zur Kompatibilität mit 8-Bit- und 7-Bit-Umgebungen kann Unicode auch als UTF-8 bzw. UTF-7 codiert werden. Unicode-fähige Funktionen in Windows UTF-16 verwenden, aber es ist auch möglich, mit In UTF-8 oder UTF-7 codierten Daten zu arbeiten, die in Windows als Codepagesmit Multibytezeichensatz unterstützt werden.

Neue Windows Anwendungen sollten UTF-16 als interne Datendarstellung verwenden. Windows bietet auch umfassende Unterstützung für Codepages, und die gemischte Verwendung in derselben Anwendung ist möglich. Selbst neue Unicode-basierte Anwendungen müssen manchmal mit Codepages arbeiten. Die Gründe hierfür werden unter Codepageserläutert.

Eine Anwendung kann die Funktionen MultiByteToWideChar und WideCharToMultiByte verwenden, um Zeichenfolgen basierend auf Codepages und Unicode-Zeichenfolgen zu konvertieren. Obwohl ihre Namen auf "MultiByte" verweisen, funktionieren diese Funktionen gleichermaßen gut mit Einzelbyte-Zeichensatz (Single-Byte Character Set, SBCS), Doppelbyte-Zeichensatz (DOUBLE-Byte Character Set, DBCS) und Multibyte-Zeichensatzcodepages (MBCS).

In der Regel sollte eine Windows Anwendung intern UTF-16 verwenden und nur als Teil einer "schlanken Schicht" über die Schnittstelle konvertieren, die ein anderes Format verwenden muss. Diese Technik schützt vor Datenverlust und -beschädigung. Jede Codepage unterstützt unterschiedliche Zeichen, aber keine von ihnen unterstützt das gesamte Spektrum von Zeichen, die von Unicode bereitgestellt werden. Die meisten Codepages unterstützen unterschiedliche Teilmengen, die unterschiedlich codiert sind. Die Codepages für UTF-8 und UTF-7 stellen eine Ausnahme dar, da sie den vollständigen Unicode-Zeichensatz unterstützen und die Konvertierung zwischen diesen Codierungen und UTF-16 verlustfrei ist.

Daten, die direkt aus der von einer Codepage verwendeten Codierung in die von einer anderen verwendete Codierung konvertiert werden, sind beschädigt, da der gleiche Datenwert auf verschiedenen Codepages ein anderes Zeichen codieren kann. Auch wenn Ihre Anwendung so nah wie möglich an der Schnittstelle konvertiert wird, sollten Sie sorgfältig über den zu behandelnden Datenbereich nachdenken.

Daten, die aus Unicode in eine Codepage konvertiert werden, unterliegen Datenverlusten, da eine bestimmte Codepage möglicherweise nicht jedes Zeichen darstellen kann, das in diesen bestimmten Unicode-Daten verwendet wird. Beachten Sie daher, dass WideCharToMultiByte einige Daten verlieren kann, wenn die Zielcodepage nicht alle Zeichen in der Unicode-Zeichenfolge darstellen kann.

Bei der Modernisierung von codeseitenbasierten Legacyanwendungen für die Verwendung von Unicode können Sie generische Funktionen und das TEXT-Makro verwenden, um einen einzelnen Satz von Quellen zu verwalten, aus denen zwei Versionen Ihrer Anwendung kompiliert werden können. Eine Version unterstützt Unicode, die andere funktioniert mit Windows Codepages. Mit diesem Mechanismus können Sie auch sehr große Anwendungen von Windows Codepages in Unicode konvertieren und gleichzeitig Anwendungsquellen beibehalten, die in allen Phasen der Konvertierung kompiliert, erstellt und getestet werden können. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Unicode-Zeichen und -Zeichenfolgen verwenden Datentypen, die sich von denen für codepagebasierte Zeichen und Zeichenfolgen unterscheiden. Zusammen mit einer Reihe von Makros und Namenskonventionen minimiert diese Unterscheidung die Wahrscheinlichkeit, dass versehentlich die beiden Typen von Zeichendaten kombiniert werden. Sie erleichtert die Überprüfung des Compilertyps, um sicherzustellen, dass nur Unicode-Parameterwerte mit Funktionen verwendet werden, die Unicode-Zeichenfolgen erwarten.

Zeichensätze

Sortierung

Surrogate und ergänzende Zeichen

Verwenden der Unicode-Normalisierung zum Darstellen von Zeichenfolgen