Von ASCII bis UTF-8 im Detail

Ein (ganzes) Byte pro Zeichen

Ein Byte hat acht Bit

Schön, dass wir nicht nicht auf 128 Zeichen limitiert sind: Der Speicher unserer Computer werden in 8 Bit großen Einheiten angesprochen. Einen 8 Bit großen Datenblock nennt man ein Oktett oder landläufig auch ein Byte. Wie wir oben gelesen haben, werden in ASCII nur die durch 7 Bit darstellbaren 128 Werte (0 bis 127) zur Zeichenkodierung verwendet. Das 8. Bit hatte früher bei einigen Rechnern eine besondere Funktion; andere setzten es einfach immer auf Null. Es wäre Verschwendung, das 8. Bit weiterhin einfach zu nullen. Wenn wir alle 8 Bit, also das ganze Byte nutzen, kann es pro Einheit 256 verschiedene Zahlenwerte (0 bis 255) annehmen. Wir können damit einen Zeichensatz von 256 Zeichen kodieren: Wir weisen den Zahlenwerten 128 bis 255 weitere Zeichen zu. So können wir Umlauten, Akzenten, Währungszeichen, Anführungszeichen, dem scharfen S und weiteren Sonderzeichen einen dieser in ASCII ungenutzten Zahlenwert zuordnen.

So geschehen z.B. in den 1980er Jahren als Standard mit dem Namen ISO 8859‑1, auch Latin‑1 genannt. Dieser enthält praktisch alles, was man für die west-europäischen Sprachen braucht.

Einwand: Aber damals gab es noch keinen Euro und mithin kein Eurozeichen? Richtig. Das kam 1999 mit der Nachfolgeversion, genannt ISO 8859‑15 (Latin‑9). Bei ihr wurden ein paar weniger bedeutende Zeichen ausgetauscht. Es kamen das Euro-Synbol € und ein paar bis dahin noch fehlende Buchstaben aus dem Französischen und Finnischen hinzu.

Mehr passte aber auch nicht hinein. Für die gar lustigen Buchstaben unserer polnischen Nachbarn war kein Platz mehr in Latin‑1 und Latin‑9. Dennoch hatte man von Anfang an auch an die Sprachen Ost-Europas gedacht und diesen die Kodierung ISO 8859‑2 (Latin‑2) gewidmet. Ähnliches für sonstige Sprachgruppen. Insgesamt gibt es unter ISO 8859 ganze 15 gültige Zeichenkodierungen. Damit sind praktisch alle Sprachen abgedeckt, die das lateinische Alphabet benutzen.

ASCII-Kompatibilität

Es sei noch erwähnt, dass die ersten 128 Zeichen bei allen oben genannten Kodierungen gleich sind: Man hat sie so gelassen, wie sie bereits in ASCII definiert waren. Das hat sich bewährt. Es macht Dateien z.B. weniger anfällig, wenn sie von einer dieser Kodierung in eine andere überführt werden. Die durch die Zahlen 0 bis 127 repräsentierten Zeichen gehen dabei schon mal nicht kaputt. Eine Datei mit einem englischen Text sieht Byte für Byte exakt gleich aus, ob sie nun in ASCII, Latin‑1 oder Latin‑15 kodiert ist. Warum? Weil ein englischer Text nur aus den Buchstaben A bis Z sowie vielleicht Zahlen und normaler Interpunktion besteht. Alle diese Zeichen werden durch Zahlen im Bereich 0 bis 127 repräsentiert und in diesem Bereich gibt es keine Unterschiede. Die Unterschiede treten erst im Bereich ab Zeichen Nummer 128 auf, weil dort ja die jeweils länderspezifischen Zeichen kommen. Beispiel: Der Zahlenwert 179 repräsentiert in Latin‑1 eine hochgestellte 3 (wie in m³) und in Latin‑2 das kleine l mit Strich wie z.B. im Polnisch verwendet (ƚ).

Es gibt selbstverständlich auch Kodierungen, die nicht ASCII-kompatibel sind; bei denen die Zahlenwerte 0 bis 127 andere Zeichen repäsentieren als in ASCII. Als Beispiel sei hier EBCDIC genannt. Diese Kodierungen spielen heute, zumindest in meiner Welt, keine Rolle mehr.

Sind 256 Zeichen genug?

Leider reichen auch 256 Zeichen für die internationale Kommunikation nicht aus. Erstens gibt es multilinguale Dokumente und zweitens verbaut man sich mit einem so limitierten Zeichensatz viele Möglichkeiten:

Teil 2 ←→ Teil 4

© Hermann Faß, 2013