Unicode ist ein Zeichenkodierungssystem, in dem Textdaten auf Computern gespeichert und ausgetauscht werden. Jedem Zeichen der wichtigsten Schriftsysteme der Welt wird dabei ein eindeutiger Wert (Codepunkt) zugewiesen. Enthalten sind außerdem technische Symbole, Interpunktionszeichen und viele andere Zeichen aus geschriebenen Texten.
Unicode ist jedoch nicht nur eine Zeichentabelle, sondern enthält auch Algorithmen für die Sortierung und Kodierung bidirektionaler Schriften, beispielsweise Arabisch, sowie Angaben zur Normalisierung von Textformen.
In diesem Abschnitt erhalten Sie einen Überblick über Unicode. Eine ausführlichere Erläuterung und eine Liste der Sprachen, die in Unicode kodiert werden können, finden Sie auf der Website des Unicode-Konsortiums.
Codepunkte
Zeichen sind Informationseinheiten, die in etwa einer Texteinheit in der geschriebenen Form einer natürlichen Sprache entsprechen. In Unicode ist definiert, wie Zeichen interpretiert werden, nicht jedoch deren Wiedergabe.
Eine Glyphe ist die Wiedergabe oder die visuelle Darstellung eines Zeichens, die auf dem Computerbildschirm angezeigt oder auf einer Druckseite ausgegeben wird. In einigen Schriftsystemen sind Zuordnungen möglich, bei denen ein Zeichen mehreren Glyphen entspricht oder auch mehrere Zeichen einer Glyphe entsprechen. Beispielsweise ist das "ll" im Spanischen eine Glyphe, die aus zwei Zeichen besteht: "l" und "l".
In Unicode entspricht ein Zeichen einem Codepunkt. Dabei ist ein Codepunkt die Zahl, die das Unicode-Konsortium einem bestimmten Zeichen eines Schriftsystems zugeordnet hat. Codepunkte werden als "U+" gefolgt von vier Ziffern und/oder Buchstaben dargestellt. Als Beispiele seien hier die Codepunkte der folgenden vier Zeichen angegeben: der Kleinbuchstabe l, der Kleinbuchstabe u mit Umlautpunkten, das griechische Beta und der Kleinbuchstabe e mit Akutakzent.
l = U+006C
ü = U+00FC
β = U+0392
é = U+00E9
Unicode umfasst 1.114.112 Codepunkte, wobei derzeit über 96.000 Codepunkten ein Zeichen zugeordnet ist.
Ebenen
Der Codebereich von Unicode für Zeichen ist in 17 Ebenen unterteilt, wobei jede Ebene 65.536 Codepunkte enthält.
Ebene 0 bildet die erste Ebene: die "Basic Multilingual Plane" (BMP, grundlegende mehrsprachige Ebene). Die Mehrzahl der gebräuchlichen Zeichen ist in der BMP enthalten. Dort sind auch bislang die meisten Zeichen zugeordnet. Die BMP umfasst die Codepunkte für nahezu sämtliche Zeichen moderner Sprachen und viele Sonderzeichen. Etwa 6.300 Codepunkte in der BMP sind noch nicht belegt. Weitere Zeichen werden künftig dort hinzugefügt.
Ebene 1 bildet die nächste Ebene: die "Supplemental Multilingual Plane" (SMP, ergänzende mehrsprachige Ebene). Die SMP umfasst historische Schriften sowie die Notenschrift und mathematische Symbole.
Zeichenkodierung
In Zeichenkodierungen werden die einzelnen Zeichen, der entsprechende Codepunkt und die Bit-Darstellung des Codepunkts definiert. Wenn die Kodierung nicht bekannt ist, kann eine Zeichenfolge nicht korrekt interpretiert werden.
Zwar sind zahlreiche Kodierungsschemas vorhanden, doch die wechselseitige Konvertierung ist möglicherweise schwierig. Außerdem werden in einem Schema meist nur wenige verschiedene Sprachen berücksichtigt. Angenommen, das voreingestellte Kodierungsschema eines Computers ist "OEM - Lateinisch II", und Sie navigieren zu einer Website mit der Kodierung "IBM EBCDIC - Kyrillisch". Sämtliche Zeichen des kyrillischen Zeichensatzes, die nicht im Kodierungsschema "OEM - Lateinisch II" enthalten sind, werden nicht ordnungsgemäß dargestellt, sondern durch andere Zeichen ersetzt, beispielsweise Fragezeichen oder Rechtecke.
Da Unicode Codepunkte für fast alle Zeichen sämtlicher modernen Sprachen enthält, können Computer mit einem Encoder für Unicode-Zeichen nahezu jedes bekannte Zeichen interpretieren.
Derzeit werden hauptsächlich drei Unicode-Kodierungsschemas verwendet: UTF-8, UTF-16 und UTF-32. UTF steht dabei für "Unicode Transformation Format". Die Zahl nach UTF gibt die Anzahl der Bits an, mit denen die Kodierung erfolgt.
- In UTF-8 werden Zeichen mit variabler Breite und 8 Bit kodiert. Dabei wird ein Zeichen mit 1 bis 6 Bytes kodiert, wobei im Vergleich zu UTF-16 dasselbe Zeichen mit weniger, gleich vielen oder mehr Bytes kodiert werden kann. In UTF-8 sind die Codepunkte von 0 bis 127 (U+0000 bis U+0127) in einem Byte gespeichert. Zum Speichern der Codepunkte ab 128 (U+0128) sind 2 bis 6 Bytes erforderlich.
- In UTF-16 wird eine 16-Bit-Codeeinheit mit fester Breite verwendet. Das System ist relativ kompakt. Sämtliche gebräuchlichen Zeichen können mit einer 16-Bit-Codeeinheit dargestellt werden. Weitere Zeichen lassen sich mit Paaren von 16-Bit-Codeeinheiten darstellen.
- In UTF-32 müssen alle Zeichen mit 4 Bytes kodiert werden. In den meisten Fällen ist ein in UTF-32-kodiertes Dokument etwa doppelt so groß wie das gleiche Dokument in UTF-16. Jedes Zeichen wird als 32-Bit-Codeeinheit mit fester Breite kodiert. UTF-32 kann verwendet werden, wenn keine Speicherplatzbeschränkungen bestehen und Sie für jedes Zeichen genau eine Codeeinheit verwenden möchten.
Die Zeichen sind in allen drei Systemen identisch kodiert und können somit wechselseitig ohne Datenverlust ineinander konvertiert werden.
Weitere Unicode-Zeichenkodierungssysteme sind UTF-7 und UTF-EBCDIC. Ferner wird die Kodierung GB18030 verwendet, bei der es sich um die chinesische Entsprechung von UTF-8 handelt. Sowohl vereinfachtes als auch traditionelles Chinesisch werden unterstützt.