einklich.net  > Erklärungen > Euro-Kodierung

26. Feb. 2004

Die Probleme mit dem Euro-Zeichen

Vorbemerkung

Dieser Text ist die Fortsetzung des Postings Textkodierung in Datennetzen.

Einige sachliche Fehler, auf die mich andere Mitleser hingewiesen haben, habe ich hier korrigiert, einige Ergänzungen behutsam eingefügt (der Fairness halber in rot dargestellt).

From: "Volker Gringmuth" <news-fups@volker-gringmuth.de>
Newsgroups: de.comm.software.outlook-express
Subject: Re: Umlautdeklaration
Date: Wed, 17 Apr 2002 14:12:13 GMT
Message-ID: <a9k6sr.3vg8bcr.1@h1.einklich.de>


Mit dem Euro-Zeichen ist das so. Das kam mitsamt dem Euro erst in Mode, als der Zeichensatz iso-8859-1 schon längst auf dem Markt war. Daher kommt er in diesem Zeichensatz nicht vor.

Microsoft machte es sich für den Systemzeichensatz einfach, suchte und fand einen freien Platz: Nummer 128, 10000000 auf binär, wo sich bislang ein Steuerzeichen breitmachte, das sowieso keiner brauchte. Genau da thront der Euro, wie man auf jedem Windows- System nachprüfen kann, indem man in einem Texteingabefeld die <ALT>- Taste gedrückt hält und auf dem Ziffernblock 0-1-2-8 tippt.

Der aktuelle Windows-Zeichensatz heißt "Windows-1252".

Die offizielle Stelle für die iso-Zeichensätze [1] machte es anders. Sie hielt auch Ausschau nach einem Zeichen, das keiner braucht, nahm dafür aber kein nutzloses Steuerzeichen weg, sondern ein anderes Währungssymbol: das internationale Währungszeichen "¤", auch "Dübel" oder "Rakete" genannt.

Den neuen Zeichensatz nannten sie iso-8859-15. Er unterscheidet sich von iso-8859-1 an mehreren Stellen, aber vor allem dadurch, daß er an der Stelle 164, auch 10100100 genannt, keinen Dübel, sondern einen Euro hat.

Bislang war die "Übersetzung" vom iso-Zeichensatz in den Windows- Systemzeichensatz noch einfach, weil die Umlaute auf den selben Positionen lagen. Aber das ist beim Euro dummerweise nicht mehr so - jetzt muß beim Kodieren/Dekodieren die Bitfolge im Text geändert werden. Aus 10000000 in windows-1252 wird 10100100 in iso-8859-15.

        |  Windows-1252   |   iso-8859-1    |   iso-8859-15   |
--------+-----------------+-----------------+-----------------+
Stelle  |  128   |  164   |  128   |  164   |  128   |  164   |
--------+--------+--------+--------+--------+--------+--------+
Zeichen |  Euro  |  Dübel |   -    |  Dübel |   -    |  Euro  |
--------+--------+--------+--------+--------+--------+--------+

Und damit geht die Konfusion los. Jetzt müssen wir nämlich richtig anfangen zu denken.

Nehmen wir an, ein Euro wird in einem Posting auf einem Windows-System (Zeichen #128) richtig kodiert, nämlich als Zeichen #164 im Zeichensatz iso-8859-15, und so verschickt.

Ein Empfänger mit funktionierendem Reader - nennen wir ihn Anton - kann das wieder zu Zeichen #128 im Windows-Zeichensatz zurückübersetzen und sieht den Euro richtig. Merk dir diesen Fall - genau so sollte es eigentlich sein, denn nur so ist gesichert, daß das richtige Zeichen dargestellt wird. Alles andere ist Zeichenlotto.

Ein zweiter Empfänger - Bernd - mit einem Reader, der nicht dekodiert, sondern rät, sieht das entsprechende Zeichen seines Systemzeichensatzes - also Zeichen #164, einen Dübel!

Du hast Christian vergessen, der einen ähnlichen Reader benutzt wie Bernd. Aber er hat einen Macintosch mit einem ganz anderen Systemzeichensatz. Hier sieht er dann z.B. einen Paragraphen §.

Detlef dagegen, auch mit einem Macintosh, hat einen richtigen Reader, und er sieht einen Euro.

Und jetzt nehmen wir weiter an, noch jemand verschickt ein Eurozeichen, aber falsch kodiert. Er hat vielleicht ein System, das nichts kodiert, aber immer auf Verdacht iso-8859-1 einsetzt - etwa einen Xnews mit eingesetzten "Custom Headers" [2], oder er ist T-Online-Kunde [3].

Der Euro wird jetzt als Zeichen 128 verschickt (er wurde ja nicht umkodiert), deklariert ist iso-8859-1. Du kannst die Katastrophe vielleichs schon ahnen!

Antons Reader - hatten wir gesagt - dekodiert richtig. #128 in iso-8859-1 ist ein Steuerzeichen, das nicht druckbar ist - er setzt ein Fragezeichen oder sonstwas dafür ein, da es kein darstellbares Zeichen an dieser Stelle gibt.

Bernds Reader dagegen - der nichts dekodiert - stellt das empfangene Zeichen #128 - ratenderweise! - aus dem Systemzeichensatz dar und trifft damit (zufällig) genau das Eurozeichen!

Und Christian ist ganz gekniffen, bei dem erscheint nämlich auch hier nur Unsinn. Er sieht ein A mit einer Schlange drauf, Ã. Detlef dagegen sieht natürlich ein Fragezeichen, genau wie Anton.

Jetzt wird wahrscheinlich eine wüste Beschimpfung losgehen: Bernd wird Anton vorwerfen, sein Reader sei kaputt - weil der ja nur ein Fragezeichen zeigt - und Bernds Reader, auf dem immer alle so rumhacken, funktioniere offensichtlich, denn er stelle den Euro ja richtig dar. Und der Absender wird wohl kaum verstehen, warum sein Euro bei einem Leser richtig ankommt und bei einem anderen nicht.

In der Tat ist es irritierenderweise so, daß Systeme, die beim Dekodieren kaputt sind, mit Sonderzeichen, deren Kodierung ebenfalls kaputt ist, wenig Probleme haben - wenn, ja wenn der Systemzeichensatz beider Systeme derselbe ist. Das meinen die nervigen Regulars immer mit "wird zufällig richtig dargestellt". Du weißt jetzt, daß das mehr mit "Glück" als mit "Funktion" zu tun hat.

Wenn man unter Windows einen nicht-kodierenden Newsreader verwendet und auf Verdacht die Kodierungs-Header einfügen läßt, dann sollte man nicht iso-8859-1 einfügen, sondern ehrlicherweise windows-1252 - denn das ist das, was man verschickt.

Bernd wird aber den Eindruck haben, sein System sei "besser" als das von Anton, weil es doch diesen Euro richtig darstelle. Du hast jetzt aber hoffentlich gemerkt, daß die Folgerung "ich seh den Euro - also ist mein System in Ordnung" ein Trugschluß ist. Denn ein geratener Euro ist ein schlechter Euro.

Und außerdem wird Bernd nicht verstehen, wieso all die "Experten" behaupten, der erste Euro sei intakt und der zweite kaputt - denn er sieht den ersten als Dübel, aber den zweiten "richtig" als Euro!

Wenn dir jetzt schwindlig geworden ist: das ist normal. Leg dieses Posting beiseite und lies erst mal woanders weiter...

vG

___________
[1] nämlich die ISO - "International Standardization Organisation"
[2] Xnews kodiert von Haus aus keine Sonderzeichen, aber er kann
    zusätzliche Headerzeilen einfügen. Viele Anwender lassen daher die
    Zeichensatzdeklaration automatisch eintragen - was solange in
    Ordnung ist, wie sie nur die normalen Umlaute verwenden, die in
    iso-8859-1 und windows-1252 gleich sind
[3] Wenn T-Online ein Posting mit Sonderzeichen, aber ohne Kodierung
    erhält, setzt der Server auf Verdacht iso-8859-1 ein. Weiteres
    siehe unter [2].