Durch die 7-Bit Codierung von ASCII koennen nur wenige Zeichen abge-
bildet werden. Dieses Problem wurde durch eine Erweiterung auf 8 Bit
nur leicht entschaerft, und schuf gleichzeitig neue Probleme bei der
Kompatibilitaet verschiedener Systeme welche noch bis heute auftreten.
Durch die Einfuehrung von Unicode wurde ein Standard mit ueber einer
Million Zeichen geschaffen. Diese Menge an Zeichen ist ausreichend
fuer eine Vielzahl von Zeichen wie beispielsweise die griechischen
Buchstaben, asiatische Schriftzeichen, Piktogramme, mathematische Sym-
bole, Musiknoten und vieles mehr. Unicode wurde aufgrund der breiten
Abdeckung auch als Universal Character Set (UCS) bezeichnet.
Unicode ist mittlerweile weit verbreitet und der Standard von vielen
Systemen. Ein Problem, welches Unicode selbst jedoch nicht loeste war
die Kompatibilitaet zum weltweit akzeptierten ASCII-Standard. Unicode
definiert momentan 21 Bits, was mit den 7 Bits von ASCII nicht verein-
bar ist. Um diesem Problem entgegenzukommen wurde das Encoding UTF-8
entworfen, welches ASCII aufwaertskompatibel zu Unicode macht.
UTF-8 ist die Abkuerzung fuer 8-Bit-UCS-Transformation-Format und ist
sowohl faehig, alle Zeichen des Unicodes darzustellen, als auch die
7-Bit-ASCII-Zeichen ohne Konvertierung abzubilden. Die 7 Bits eines
ASCII-Zeichens wurden in den gaengigen Systemen stets mit 8 Bits ge-
speichert, wobei das fuehrende Bit mit 0 gesetzt war. UTF-8 hat diese
Eigenschaft uebernommen und gleichzeitig definiert, dass bei Auftreten
einer 1 beim fuehrenden Bit es sich nicht mehr um ein ASCII-Zeichen
handelt, sondern um ein Unicode-Zeichen.
Die nicht-ASCII-Zeichen werden bei UTF-8 mittels Hintereinanderreihung
mehrerer Bytes realisiert, wobei das erste Byte eines Zeichens als das
Start-Byte gilt. Je nachdem, wie die fuehrenden Bits des Start-Bytes
gesetzt sind, koennen eine unterschiedliche Anzahl an Folge-Bytes hin-
zukommen. Das Schema fuer die Umwandlung ist in folgender Tabelle dar-
gestellt:
+-------------------------------------+------------------------------+
| 0xxxxxxx | ASCII-Zeichen |
| 110xxxxx 10xxxxxx | Unicode 0x00080 - 0x007ff |
| 1110xxxx 10xxxxxx 10xxxxxx | Unicode 0x00800 - 0x0ffff |
| 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | Unicode 0x10000 - 0x1ffff |
+-------------------------------------+------------------------------+
Die x bezeichnen dabei beliebige Bits, welche bei der Umwandlung in
Unicode direkt aneinandergereiht werden und so die Zeichen ergeben,
wie sie in der rechten Spalte aufgelistet sind. Dabei ist jedoch zu
beachten, dass niederwertige Zeichen theoretisch auf unterschiedliche
Weise codiert werden koennten. Der UTF-8 Standard schreibt jedoch vor,
dass nur die Codierung mit minimalem Platzverbrauch zulaessig ist.
Die spezielle Codierung mit den fuehrenden Bits erlaubt es zudem, ein
Byte direkt als Start- oder aber als ein Folge-Byte zu identifizieren.
Dies ist insbesondere wichtig bei der Wiederherstellung von defekten
Daten oder aber auch beim Zaehlen der Anzahl Zeichen in einem String.
Mittels UTF-8 werden die in der westlichen Welt haeufig verwendeten
Zeichen automatisch mit weniger Bytes gespeichert, was in kleineren
Dateien resultiert. Der weitaus wichtigere Vorteil dieser Codierung
ist jedoch, dass bestehende ASCII-Dateien direkt als UTF-8 Dateien in-
terpretiert werden koennen. Aus diesem Grund hat sich UTF-8 weltweit
verbreitet und verhalf indirekt auch zur Verbreitung von Unicode.
======================================================================