Encoding, Unicode und UTF-8
Damit Schriftzeichen am PC dargestellt werden können, müssen sie so kodiert werden, dass der Computer sie versteht. Und der versteht bekanntlich nur Bits und Bytes, also Nullen und Einsen. Daher wurden Zeichenkodierungsschemata entwickelt, bei denen jedes Bitmuster für ein bestimmtes Zeichen steht. Ursprünglich wurde dazu (in unserem Sprachraum) der ASCII-Code konzipiert, doch er umfasst nur 128 Zeichen, davon lediglich 96 sichtbare. Das reicht aus, um die großen und kleinen Buchstaben des lateinischen Alphabets, die Ziffern 0 bis 9 und ein paar Sonderzeichen darzustellen. Sprachspezifische Buchstaben, wie deutsche Umlaute, bleiben außen vor. Später wurden sprachspezifische CES entwickelt, für die deutsche Sprache ist das ISO-8859-1 bzw. ISO-8859-15, das auch das Euro-Zeichen enthält. Doch auch der Zeichenvorrat dieser Schemata ist begrenzt. Zwar nicht nur auf eine Sprache, aber doch auf einige wenige, die räumlich nahe beieinander liegen. Probleme entstehen spätestens dann, wenn ein Dokument Zeichen völlig verschiedener Sprachen (etwa Deutsch und Japanisch) enthält. Mit zunehmender Globalisierung und Internationalisierung wurde daher Unicode entwickelt. Unicode bezeichnet Zeichensätze, die möglichst alle Zeichen sämtlicher Sprachen umfassen. Der populärste Unicode ist dabei UTF-8 (8 bit Unicode Transformation Format), der mit einer variablen Codelänge von ein bis vier Byte pro Zeichen über 1.000.000 Zeichen darstellen kann.
Warum ist UTF-8 so bedeutend? Es gibt verschiedene Unicode-Zeichensätze: UTF-8, UTF-16 und UTF-32 sind die bekanntesten. UTF-8 hat einen ganz entscheidenden Vorteil: Es ist rückwärtskompatibel zu ASCII. Gleiche Zeichen werden in ASCII und UTF-8 durch dasselbe Bitmuster repräsentiert. Damit wird nicht nur die Umstellung von ASCII-Dokumenten zu UTF-8 einfacher, da dabei keine Zeichen verloren gehen, sondern UTF-8 lässt sich auch für Applikationen, Dateisysteme und Netzwerkprotokolle verwenden, die eigentlich nur ASCII verstehen. UTF-16 dagegen verwendet teilweise Bitmuster, die in ASCII (andere) Kontrollzeichen darstellen. Deshalb können UTF-8-Dokumente im Gegensatz zu UTF-16 und UTF-32 auch rudimentär (mit Platzhaltern) in Applikationen dargestellt werden, die eigentlich nur ASCII verstehen.
Außerdem ist UTF-8 im Vergleich zu seinen „großen Brüdern“ wesentlich bescheidener im Hinblick auf erforderliche Ressourcen. Während UTF-16 ein Zeichen als 16-Bit-Wert speichert, kann UTF-8 einfache Zeichen, die dem Zeichenvorrat von ASCII angehören, als 8-Bit-Wert speichern. Da sich mit ASCII ein Großteil der Zeichen im westeuropäischen und amerikanischen Sprachraum darstellen lassen, können die meisten dieser Sprachen mit einem durchschnittlichen Speicheraufwand von 1.1 Byte pro Zeichen dargestellt werden. Das ist fast genauso effizient wie ASCII, aber durch die Möglichkeit, bei Bedarf insgesamt 4 Byte zu belegen, können darüber hinaus auch sehr exotische und seltene Zeichen dargestellt werden.
Außerdem lässt sich UTF-8 im Gegensatz zu anderen Multibytekodierungen sehr einfach manipulieren. Zum Beispiel lässt sich der Anfang eines Zeichens sehr einfach ermitteln. So genannte Trail-Bytes – Bytes, die über das erste Byte hinaus zur Darstellung eines Zeichens benötigt werden, werden immer durch das Bitmuster 10xxxxxx repräsentiert. Der Anfang des zugehörigen Zeichens ist dann maximal 3 Bytes weiter links zu finden. Sie können dieses Thema mit den Artikeln What is UTF-8 And Why Is It Important? und Which character encoding should I use for communicating with other software? vertiefen.
Weiter mit: Teil 2
Alle Teile: Teil 1, Teil 2, Teil 3
[…] Sie Ihre Website noch heute auf UTF-8 um. Das nötige Rüstzeug dazu haben Sie jetzt. Alle Teile: Teil 1, Teil 2, Teil 3 Be the first to share this article with your network! […]
[…] Jetzt online lesen bei entwickler.de […]