Frank: der € kommt bald !

Hallo!

Der allseits beliebte € (Euro) ersetzt ja nun bald die Demark, nicht? Ein Grund, langsam seine Shopsysteme darauf umzustellen, das schön Europreise angezeigt werden.

Da ich meine Systeme über XML fahre, dachte ich: schön im Attribut @Waehrung eines Tags trägst du einfach "€" ein. Die Iso-Codierung steht bekanntlich auch auf iso8859-1 (Latin 1). Meine Tastatur hat eine Eurotaste, es wird auch Euro angezeigt, wenn ich diese betätige, also habe ich folgendes Konstrukt:

<information type="economic">
  <content name="vpreis" einheit="€" fragmented="no">2,50</content>
</information>

Jedoch was bekomme ich angezeigt:    2,50 ?   es steht sogar genauso im Quelltext, erstaunlich!!!

Hole ich mir das Zeichen aus einem DB-Server (Oracle, MS SQL, MS Access, DBase, etc) dann zeigt es mir auch € an und nicht ?.

Lange Rede kurzer Sinn:

Woran liegt das jetzt:

  • Falscher Zeichensatz?
  • Darf ich € nur als Unicode-Entity einsetzen? "& # 8364;"
  • ist die Währungsreform an der Zeichensatzmaterie vorbeigegangen?
  • nutze ich den falschen Brauser? das falsche OS?
  • waren meine Erwartungen an XML zu hoch?

Fragen über Fragen, ich würd mich freuen, wenn ihr mal so eure Meinung dazu abgeben könntet.

Viele Grüße,
Frank

  1. Hallo!

    Tach

    Woran liegt das jetzt:

    • Falscher Zeichensatz?
    • Darf ich € nur als Unicode-Entity einsetzen? "& # 8364;"
    • ist die Währungsreform an der Zeichensatzmaterie vorbeigegangen?
    • nutze ich den falschen Brauser? das falsche OS?

    Naja: "Browser" ist wohl gemeint... Immer dieses Pseudo- deutsch ;-)

    • waren meine Erwartungen an XML zu hoch?

    Siehe
    http://www.netandmore.de/faq/fom-serve/cache/1116.html

    Das hab ich irgendwo in einem Forum mal gefunden. (evtl. sogar hier...)

    bye
    ich

  2. Hallo Frank

    Da ich meine Systeme über XML fahre, dachte ich: schön im Attribut @Waehrung eines Tags trägst du einfach "€" ein. Die Iso-Codierung steht bekanntlich auch auf iso8859-1 (Latin 1). Meine Tastatur hat eine Eurotaste, es wird auch Euro angezeigt, wenn ich diese betätige, also habe ich folgendes Konstrukt:

    Das stimmt nicht so ganz. Microsoft hat das Eurosymbol auf den Zeichenwert 128 gelegt, um es wegen seiner zu erwartenden Verwendungshaeufigkeit im "unteren Zeichenbereich" zu haben. Aber da die Zeichen zwischen 160 und 255 alle besetzt sind, blieb nur, auf den Bereich zwischen 128 und 159 auszuweichen - und genau der ist in ISO-8859 nicht definiert. Er gehoert zwar zum klassischen Ansi-Zeichensatz, aber eben nicht zur ISO-8859-Familie. Die Browser interpretieren Zeichen mit den Werten 128 bis 159 zwar nach Ansi-Standard, aber ein strenger Parser streikt bei solchen Zeichenwerten, wenn ein 8859-Zeichensatz zur Kodierung angegeben ist.

    Deshalb: Unicode-Notation verwenden, also die 8364er-Nummer, oder - in HTML - am besten das Entity €
    Wenn du eine eigene DTD verwendest, kannst du dir ja auch dort das Euro-Symbol als Entity definieren:
    <!ENTITY euro "&#8364;" -->

    viele Gruesse
      Stefan Muenz

    1. Hi,

      danke Euch dreien.

      Ja, so ist das wenn sich eingefahrene Dinge wie Währungen ändern.
      Den 8000er Unicode hab ich auch gerade in dem moment rausgefunden dank Server.htmlEncode("€").

      Als Entity - das hatte ich mir fast schon gedacht - da muß ich nur noch ne zeile mehr in die DTD schreiben - das kann ich noch verkraften. :-)

      Danke nochmals,

      Viele Grüße aus Dresden.
      Frank

  3. Moin

    Der allseits beliebte € (Euro) ersetzt ja nun bald die Demark, nicht? Ein Grund, langsam seine Shopsysteme darauf umzustellen, das schön Europreise angezeigt werden.

    Angesicht der Unwägbarkeiten (insbesondere bei den Browsern!) rate ich dazu, bei der kundenorienterten Präsentation von Sonderzeichen sehr zurückhaltend zu verwenden. Das gilt besonders für recht junge Sonderzeichen, wie der Euro (1998). Nimm im Zweifel also lieber das Original (Euro) oder die ebenfalls korrekte Abkürzung (EUR).

    Viele Grüße

    Swen

  4. Hallo Frank

    iso8859-1 enthält kein Euro, wenn du ein Eurozeichen verwendest, musst du entweder iso8859-15 oder geich Unicode verwenden.
    Defaultmäßig sollte eine XML-Datei in UTF-8 codiert sein und ein Browser sie auch als solchen verarbeiten. Um sicher zu gehen, kannst du den Zeichensatz aber auch explizit angeben:
    <?xml version="1.0" encoding="utf-8"?>

    Die character references &#x...; funktionieren aber auch ohne den entsprechenden Zeichensatz eingestellt zu haben.

    Bei der Verwendung von UTF-8 musst du dir einen Editor besorgen, der Text in UTF-8 speichern kann.

    Grüße

    Daniel

    1. Hallo Frank

      iso8859-1 enthält kein Euro, wenn du ein Eurozeichen verwendest, musst du entweder iso8859-15 oder geich Unicode verwenden.
      Defaultmäßig sollte eine XML-Datei in UTF-8 codiert sein und ein Browser sie auch als solchen verarbeiten. Um sicher zu gehen, kannst du den Zeichensatz aber auch explizit angeben:
      <?xml version="1.0" encoding="utf-8"?>

      Die character references &#x...; funktionieren aber auch ohne den entsprechenden Zeichensatz eingestellt zu haben.

      Bei der Verwendung von UTF-8 musst du dir einen Editor besorgen, der Text in UTF-8 speichern kann.
      Grüße
      Daniel

      Hi,

      danke für den Tip, utf-8 lass ich mal lieber weg, da ich sonst nur noch kästchen auf dem Bild hab wo vorher die Umlaute waren. Es war schon etwas schwierig msxml3 beizubringen, dass ich das XSLT-Ergebnis in iso8859-1 haben will. Denn es kommt zwangsweise utf-8 raus.

      FEATURE oder BUG?

      Aber ich habe gerade noch etwas herumexperimentiert und jetzt mal wieder iso8859-1 und das Euro-Zeichen € eingegeben und siehe da, es funktioniert :-)  Es ist erstaunlich, wahrlich.

      Also kennt der Latin-1 doch das Eurozeichen oder nur bei mir???

      Naja, nu habsch eeen Broblehm weehnscher.

      Viele Grüße, Frank