XML-Know How

Technische Voraussetzungen für das crossmediale Publizieren

Das Geheimnis der Zeichencodierung

Wenden wir uns zunächst wieder der Email zu, in der wir die fehlerhaften Schriftzeichen gefunden haben. Wie kommt es, dass manche Schriftzeichen immer richtig ankommen, andere – zum Beispiel die Umlaute, Akzentbuchstaben etc. – immer wieder falsch?

Die Speicherung digitaler Daten

Um das zu verstehen, müssen wir einen kleinen Exkurs in die Computertechnik unternehmen. Seit jeher wird jedes Zeichen, das in den Rechner eingetippt wird, auf je einem Byte Speicherplatz abgelegt. Ein »Byte« ist die kleinste Speichereinheit, die ein Anwendungsprogramm wie Word oder InDesign ansteuern kann. Ein Byte belegt also eine bestimmte Menge Speicherplatz (z. B. auf der Festplatte), nämlich acht Bit. Das einzelne Bit wiederum kann nur die Werte »0« oder »1« annehmen – die Grundlage jedes digitalen Prozesses. Ein Byte, das aus acht Bit besteht, kann 256 verschiedene Werte – Speicherzustände – annehmen, von dem Wert 00000000 bis zum Wert 11111111. Im Grunde genommen arbeitet jeder Computer auf der Welt nach diesem Prinzip. Die Verständigung auf das Byte als kleinste Austausch-Einheit ist die Grundlage der elektronischen Datenübertragung von einem Computer auf einen anderen. Und: Die Datenübertragung selbst funktioniert sehr zuverlässig – sie ist das Rückgrat unserer gesamten digitalen Gesellschaft.

Das heißt aber auch: Es ist faktisch ausgeschlossen, dass die Datei beim Übertragen tatsächlich »kaputt« gegangen ist, und das auch noch immer an den gleichen Stellen (nämlich z. B. bei den Umlauten). Auch kann davon ausgegangen werden, dass die Datei bei lesendem Zugriff auf den Speicher nicht verändert wird.

Abb. 9 Auch wenn es am Bildschirm anders aussieht: Das gespeicherte Zeichen ist keineswegs »kaputtgegangen«. Es wird lediglich vom Zielrechner anders interpretiert

Es ist zunächst einmal eine gute Nachricht, dass der Datei selbst nichts passiert ist. Dennoch ist die Darstellung des Zeichens falsch. Was also ist passiert?

Bytes werden interpretiert

Wenn das Byte (im Beispiel: ein Byte mit dem Wert 10100110) fehlerfrei auf dem Zielrechner ankommt, so bleibt eigentlich nur noch eine mögliche Lösung: Das Byte wird anders interpretiert als vom Sender der Nachricht beabsichtigt. Das gilt es künftig zu verhindern. Aber warum wird es falsch interpretiert?

Ein Byte besteht, wie gesagt, aus acht Bit. Damit kann auf einem Byte maximal eines von 256 Zeichen abgespeichert werden. Wir stellen uns das Speichersystem von Zeichen im Computer wie einen alten Setzkasten vor, in dem früher im Bleisatz die einzelnen Bleilettern abgelegt waren:

Abb. 10 klassische Zeichenbelegung in einem Blei-Setzkasten

Die Codepage

Dieser Setzkasten heißt im Computer »Codepage« und besteht aus 256 Kästchen, in dem die Buchstaben »abgelegt« sind. Wenn ein Byte mit einem bestimmten Wert dargestellt werden soll, so wählt der Rechner das Zeichen aus, das diesem Wert entspricht und stellt es am Bildschirm dar. Der Rechner kann also nicht überprüfen, ob er jetzt wirklich ein »ü« darstellt, denn was ein »ü« ist, ist ihm nicht bekannt. Vielmehr »greift« er zielstrebig immer ins gleiche Fach des Setzkastens und holt das Zeichen.

Abb. 11 Ablage von Zeichen in dem »elektronischen Setzkasten«, der sogenannten Codepage

Das Problem ist nur: Es gibt weit mehr als 256 Zeichen auf der Welt. Wir sprechen noch nicht von den verschiedenen Fonts, über die ein Zeichen unterschiedlich dargestellt werden kann, sondern lediglich von den bedeutungsverschiedenen graphischen Einheiten in einem Schriftsystem. Neben den lateinischen Schriftzeichen gibt es ja auch die griechischen, kyrillischen, arabischen, hebräischen … und gleichzeitig stehen aber zunächst nur 256 Speicherplätze zur Verfügung.

Dieser »Engpass« in der Computertechnik hat in den Anfangstagen der Computertechnik dazu geführt, dass die einzelnen Computerhersteller sich den »Setzkasten« jeweils unterschiedlich bestückt hatten. Eine Weitergabe von Daten von einem Rechner auf einen anderen war damit fast unmöglich – war es doch möglich, dass beim Empfänger kein einziges Zeichen auf der selben Speicheradresse abgelegt war wie beim Sender.

ASCII

Um diesem Problem zu begegnen, wurde bereits 1963 ein einheitlicher Standard zur Belegung der Codepages beschlossen – der American Standard Code for Information Interchange, kurz ASCII. Er umfasst nur 128 Zeichen, 33 nicht druckbare und 95 druckbare Zeichen:

!"#$%&'()*+,-./0123456789:;<=>?

@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_

'abcdefghijklmnopqrstuvwxyz{|}~

Heute gilt die Vereinbarung, dass diese 128 Zeichen von jedem Computer unterstützt werden sollen – die erste Hälfte des »Setzkastens« ist also auf jedem Rechner der Welt identisch belegt. Das schuf die Möglichkeit zum verlässlichen Datenaustausch und ist bis heute der zuverlässigste Datenübertragungscode. Die zweite Hälfte des »Setzkastens« wird hingegen je nach Sprachraum unterschiedlich belegt. Und hier findet sich die Auflösung, warum bestimmte Zeichen, nie aber die lateinischen Grundbuchstaben, so oft falsch dargestellt werden: Sie werden schlicht mit einer falschen Codepage dargestellt. Um weiter in der Bildsprache des Setzkastens zu bleiben: Der Rechner hat in das richtige Kästchen gegriffen – aber in den falschen Setzkasten.