Mario Sedlak
Computer
Hauptthemen

Beispiel-Unicode-Zeichen:
(Da laufend neue Zeichen hinzukommen, kann man nicht erwarten, dass alle Zeichen überall angezeigt werden.)

ğ

Buchstabe mit Breve
(Zeichennr. 287)

ǧ

Buchstabe mit Hatschek
(Zeichennr. 487)

Euro-Zeichen
(Zeichennr. 8364)

Promille-Zeichen
(Zeichennr. 8240)

Mathematisches Symbol für reelle Zahlen
(Zeichennr. 8477)

Einfacher Smilie
(Zeichennr. 9786)

Chinesisches Schriftzeichen
(Zeichennr. 19 996)

Arabische Schriftzeichen
(Zeichennr. 65 018)

𓀀

Ägyptische Hieroglyphe
(Zeichennr. 77 824)

🇦🇹

Österreichische Flagge oder anderes Symbol für Österreich
(Zeichennr. 127 462 und 127 481)

📸⃠

Fotografieren mit Blitz verboten
(Zeichennr. 128 248 und 8416)

👱🏿‍♀️

Blonde Frau mit dunkler Hautfarbe
(Zeichennr. 128 113, 127 999, 8205, 9792 und 65 039)

Unicode

Unicode ist der internationale Standardzeichensatz, der alle lokalen Varianten von Zeichensätzen überflüssig machen soll. Er ist eine Erweiterung von ASCII und ISO-8859-1, d. h. die Unicode-Zeichen Nr. 0–255 stimmen mit diesen älteren Zeichensätzen, die in westlichen Ländern gängig sind oder waren, überein. Bis jetzt enthält Unicode rund 130 000 Zeichen. Weitere werden laufend hinzugefügt.

Varianten

Name Vorteile Nachteile
UTF-8
  • Zeichen mit einer Nummer bis 127 werden mit einem Byte codiert.
  • Zeichen mit einer Nummer>127 werden als eine Folge von zwei bis vier Bytes codiert. Jedes dieser Bytes entspricht einer Nummer>127, sodass es nicht mit einem ASCII-Zeichen verwechselt werden kann. (Z. B. werden Zeilenumbrüche – Zeichennummern 10 und 13 – zwischen Windows- und Unix-Standards konvertiert.)
  • Reiner 7-bit-ASCII-Text ist gleichzeitig UTF-8-codiert. Keine Umwandlung erforderlich!
  • Alte Software kann zumindest die 7-bit-ASCII-Zeichen im UTF-8-Code darstellen. Lediglich die Zeichen mit einer Nummer>127 ergeben Buchstabensalat, wenn die Software nur für ASCII oder einen 8-bit-Zeichensatz geschrieben wurde.
  • Deutsche Umlaute brauchen 2 Bytes statt einem.
  • Wechselnde Bytesanzahl pro Zeichen, daher kein direkter Zugriff auf das x-te Zeichen möglich
UTF-16
  • Zeichen mit einer Nummer bis 65 535 werden mit zwei Bytes codiert.
  • Zeichen mit einer Nummer>127 werden als eine Folge von vier Bytes codiert. Deswegen gibt es keine Unicode-Zeichen mit einer Nummer zwischen 55 296 und 57 343 – mit diesen Zahlen werden in UTF-16 die Zeichen mit einer Nummer zwischen 65 536 und 1 114 111 codiert.
Bei Beschränkung auf die gängigsten Zeichen ist ein direkter Zugriff auf das x-te Zeichen möglich.
  • für deutschen Text doppelter Speicherplatzbedarf
  • zwei verschiedene Untervarianten:
    • höherwertiges Byte zuerst (Big Endian)
    • niederwertiges Byte zuerst (Little Endian)
UTF-32

Alle Zeichen werden durch vier Bytes codiert.

einheitliche Länge pro Zeichen
  • für deutschen Text vierfacher Speicherplatzbedarf
  • Von den 32 bit der 4 Bytes werden nur 21 bit genutzt.

Unicode-Zeichenketten werden meist mit UTF-8 oder UTF-16 codiert, während einzelne Zeichen manchmal als UTF-32 dargestellt werden.

Die Codierung in UTF-8 und UTF-16 ist so gewählt, dass einzelne Fehler (z. B. Abschneiden einer zusammengehörigen Bytefolge) zu keinen Folgefehlern (und damit Zeichensalat) führen. So ist zu verstehen, wieso nicht die kürzestmöglichen Bytefolgen verwendet werden.

Vergangenheit

Name Vorteile Nachteile
UTF-7

Hier werden nur 7 bit pro Byte verwendet.

In den 1970ern und vereinzelt noch in den 1990ern hatten manche Computer nur 7 bit pro Byte. Heute haben alle Computer 8 bit pro Byte. Daher wird UTF-7 nicht mehr gebraucht. Dieses Format hat sich sowieso nie durchsetzen können.

Der erste Unicode-Standard wurde 1991 veröffentlicht. Damals war die Idee noch, einen Zeichensatz wie ASCII, nur mit 65 536 statt 256 Zeichen zu definieren. Diese Zahl reichte aber nicht aus, da es allein 70 000 chinesische Zeichen gibt. 1996 wurde die Erweiterung auf bis zu 1 114 112 Zeichen (UTF-16) vorgenommen.

UTF stand ursprünglich für Universal Transfer Format. Wie der Name sagt, war UTF-8 nur für die Übertragung von Unicode-Texten gedacht. Nachdem Unicode aber kein 2-Bytes-ASCII-Code mehr ist, gibt es auch keinen Grund mehr, UTF-16 anstatt UTF-8 zu verwenden, sagen Kritiker.

Heute wird UTF als Unicode Transformation Format oder dgl. erklärt.

Zukunft

Es zeichnet sich ab, dass UTF-8 zum Standardzeichensatz wird. Im Internet ist er das bereits.

Auch langfristig soll es nicht mehr als 1 114 112 Unicode-Zeichen geben. UTF-8 könnte mehr darstellen, nicht aber UTF-16.

Zeichensatz

Unicode soll alle Zeichen enthalten, die es in irgendeiner Sprache gibt oder die eine gewisse Verbreitung erreicht haben. Wie die Zeichen aussehen, ist keine Sache von Unicode. Z. B. kann man ein A auf verschiedene Art schreiben (geschwungen, Fraktur, ...), aber es ist immer dasselbe Unicode-Zeichen (Nr. 65).

Welche Zeichen aufgenommen werden

Komplexität

Meine Meinung

Ich fände eine simple Zeichensatz-Tabelle mit einer 1:1-Beziehung zwischen Nummer und Zeichen besser. Die verschiedenen Varianten für das gleiche Zeichen verursachen immer wieder Probleme und lassen sich schwerer verarbeiten.

Unicode scheint sich mehr daran zu richten, was üblich ist, anstatt was sinnvoll ist. Es ist – wie nicht anders zu erwarten – ein riesiger Kompromiss.

Grafiken hätte ich gar nicht aufgenommen, da diese mindestens genauso gut als HTML-Code definiert und eingebunden werden könnten. Interessanterweise ist Unicode ausdrücklich nur für reinen Text gedacht. Warum führen sie dann Grafiken und eine Art Auszeichnungssprache ein? Aufgrund der damit verbundenen unbegrenzten Möglichkeiten kann man nie sicher sein, dass der Unicode überall so dargestellt wird, wie man es erwartet.

Schön, dass es alle mathematischen Symbole in Unicode gibt. Eigene Codes für fette und kursive Buchstaben hätte ich aber nicht gebraucht.

Typkennzeichnung in der Datei

Unicode-Textdateien enthalten manchmal eine bestimmte kurze Bytefolge am Anfang, anhand derer die gewählte Codierung erkannt werden kann. Sowohl ihr Vorhandensein als auch ihr Fehlen kann Probleme machen. Es handelt sich um eine Art "magische Zahl" wie sie auch für andere Dateitypen zur Unterscheidung verwendet wird.

Mein Fazit

Ein weltweit einheitlicher Zeichensatz ist natürlich sehr sinnvoll. Leider wird es aber noch lange dauern, bis man sich darauf verlassen kann, dass alle Unicode-Zeichen überall verstanden werden. Ich vermeide daher (noch) Unicode.

Weiter

Probleme mit Zeichensätzen

Weblinks