Unicode

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

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

  • Ermöglicht die Koexistenz beliebiger Zeichenkombinationen, die aus einer beliebigen Kombination von Skripts und Sprachen stammen, in einem einzelnen Dokument.
  • Definiert die 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 in der Veröffentlichung verwendet werden. Zu den unterstützten Skripts gehören unter anderem Lateinisch, Griechisch, Kyrillisch, Hebräisch, Arabisch, Devanagari, Thai, Han, Hangul, Hiragana und Katakana. Folgende Sprachen werden unterstützt: Deutsch, Französisch, Englisch, Griechisch, Russisch, Hebräisch, Arabisch, Hindi, Thai, Chinesisch, Koreanisch und Japanisch. Unicode kann derzeit die überwiegende Mehrheit der Zeichen in der modernen Computerverwendung auf der ganzen Welt darstellen und wird weiterhin aktualisiert, um es noch vollständiger zu machen.

Unicode-fähige Funktionen werden unter Konventionen für Funktionsprototypen beschrieben. Diese Funktionen verwenden UTF-16-Codierung (Breitzeichen), die die häufigste Codierung von Unicode und die für die native Unicode-Codierung unter Windows-Betriebssystemen verwendet wird. Jeder Codewert ist 16 Bit breit, im Gegensatz zum älteren Codepage-Ansatz 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 Universum der Symbole, die zum Transkribieren menschlicher 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 von ergänzenden Zeichen darstellen. Weitere Informationen finden Sie unter Ersatzzeichen und Ergänzende Zeichen .

Der Unicode-Zeichensatz enthält zahlreiche kombinierte Zeichen, z. B. U+0308 ("̈"), eine kombinationsorientierte Dierese oder Umlaute. Unicode kann häufig dieselbe Glyphe in einer ''zusammengesetzten'' oder ''zerlegten'' Form darstellen: Beispielsweise ist die zusammengesetzte Form von "Ä" der einzelne Unicode-Codepunkt "Ä" (U+00C4), während seine zerlegte Form "A" + " ̈" (U+0041 U+0308) ist. Unicode definiert kein zusammengesetztes Formular für jede Glyphe. Beispielsweise wird das vietnamesische Kleinbuchstaben "o" mit Zirkumflex und Tilde ("ỗ") durch U+006f U+0302 U+0303 (o + Circumflex + Tilde) dargestellt. Weitere Informationen zum Kombinieren von Zeichen und verwandten Problemen finden Sie unter Verwenden der Unicode-Normalisierung zum Darstellen von Zeichenfolgen.

Aus Kompatibilität mit 8-Bit- und 7-Bit-Umgebungen kann Unicode auch als UTF-8 bzw. UTF-7 codiert werden. Während Unicode-fähige Funktionen in Windows UTF-16 verwenden, ist es auch möglich, mit Daten zu arbeiten, die in UTF-8 oder UTF-7 codiert sind, die in Windows als Multibyte-Zeichensatz-Codepages unterstützt werden.

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

Eine Anwendung kann die Funktionen MultiByteToWideChar und WideCharToMultiByte verwenden, um Zeichenfolgen basierend auf Codepages und Unicode-Zeichenfolgen zu konvertieren. Obwohl sich ihre Namen auf "MultiByte" beziehen, funktionieren diese Funktionen gleichermaßen gut mit SBCS-Codepagen ( Single-Byte Character Set ), Double-Byte-Zeichensatz (DBCS) und MbCS-Codepagen (Multibyte-Zeichensatz).

In der Regel sollte eine Windows-Anwendung UTF-16 intern verwenden und nur als Teil einer "dünnen Schicht" über die Schnittstelle konvertieren, die ein anderes Format verwenden muss. Diese Technik schützt vor Datenverlust und Beschädigung von Daten. Jede Codepage unterstützt unterschiedliche Zeichen, aber keines 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 sind eine Ausnahme, da sie den vollständigen Unicode-Zeichensatz unterstützen und die Konvertierung zwischen diesen Codierungen und UTF-16 verlustfrei ist.

Daten, die direkt von der von einer Codepage verwendeten Codierung in die von einer anderen Codierung konvertiert werden, unterliegen einer Beschädigung, da derselbe Datenwert auf verschiedenen Codepages ein anderes Zeichen codieren kann. Auch wenn Ihre Anwendung so nah wie möglich an die Schnittstelle konvertiert wird, sollten Sie den zu verarbeitenden Datenbereich sorgfältig überdenken.

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

Wenn Sie codepagebasierte Legacyanwendungen für die Verwendung von Unicode modernisieren, können Sie generische Funktionen und das TEXT-Makro verwenden, um einen einzelnen Satz von Quellen zu verwalten, aus dem zwei Versionen Ihrer Anwendung kompiliert werden. Eine Version unterstützt Unicode, die andere mit Windows-Codepages. Mit diesem Mechanismus können Sie selbst 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 Codepage-basierte Zeichen und Zeichenfolgen unterscheiden. Zusammen mit einer Reihe von Makros und Benennungskonventionen minimiert diese Unterscheidung die Wahrscheinlichkeit, dass die beiden Typen von Zeichendaten versehentlich gemischt werden. Es erleichtert die Compilertypüberprüfung, 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