Unicode ist ein Zeichencodierungssystem, 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 Codierung 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 codiert 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.
Zeichencodierung
In Zeichencodierungen werden die einzelnen Zeichen, der entsprechende Codepunkt und die Bit-Darstellung des Codepunktes definiert. Wenn die Codierung nicht bekannt ist, kann eine Zeichenfolge nicht korrekt interpretiert werden.
Zwar sind zahlreiche Codierungsschemas 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 Codierungsschema eines Computers ist "OEM - Lateinisch II", und Sie navigieren zu einer Website mit der Codierung "IBM EBCDIC - Kyrillisch". Sämtliche Zeichen des kyrillischen Zeichensatzes, die nicht im Codierungsschema "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-Codierungsschemas 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 Codierung erfolgt.
- In UTF-8 UTF-8 werden Zeichen mit variabler Breite und 8 Bit codiert. Dabei wird ein Zeichen mit 1 bis 6 Bytes codiert, wobei im Vergleich zu UTF-16 dasselbe Zeichen mit weniger, gleich vielen oder mehr Bytes codiert 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 codiert werden. In den meisten Fällen ist ein in UTF-32-codiertes Dokument etwa doppelt so groß wie das gleiche Dokument in UTF-16. Jedes Zeichen wird als 32-Bit-Codeeinheit mit fester Breite codiert. 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 codiert und können somit wechselseitig ohne Datenverlust ineinander konvertiert werden.
Weitere Unicode-Zeichencodierungssysteme sind UTF-7 und UTF-EBCDIC. Ferner wird die Codierung GB18030 verwendet, bei der es sich um die chinesische Entsprechung von UTF-8 handelt. Sowohl vereinfachtes als auch traditionelles Chinesisch werden unterstützt.