Ingo D. Ongemuth: Euro/Characterset Probleme mit dem IE mac

Hallo, SelfHTML-Forum,

Ich habe ein Problem mit dem Internet Explorer (V5.2) auf dem Macintosh (OS X). Und zwar führt die Kombination aus charset ISO-8859-15 und Umlauten in Auswahlfeldern dazu, dass diese nicht angezeigt werden. Getestet werden kann das mit folgender HTML-Datei:

<html>
<head>
  <title>test</title>
</head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
<body>
  <form>
    <select>
      <option>- Auswahl- </option>
      <option>Ein Ä</option>
      <option>Ein Ö</option>
      <option>Ein Ü</option>
      <option>Ein ß</option>
    </select>
  </form>
</body>

Ein Umsetzen des charsets auf ISO-8859-1 löst zwar dieses spezielle Problem, charset ISO-8859-15 benötige ich aber unbedingt des Euro-Zeichens wegen. Kann mir jemand eine Lösung nennen bzw. weiß, was ich falsch mache? Wo genau muß man <meta>-Angaben eigentlich einbinden, in den HEAD-Bereich oder ist das nicht genau spezifiziert? Auf den W3C-Seiten konnte ich nichts finden...

Danke vielmals und Grüsse, Ingo

  1. Ich habe ein Problem mit dem Internet Explorer (V5.2) auf dem Macintosh (OS X). Und zwar führt die Kombination aus charset ISO-8859-15 und Umlauten in Auswahlfeldern dazu, dass diese nicht angezeigt werden. Getestet werden kann das mit folgender HTML-Datei:

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">

    <option>Ein Ä</option>

    Ein Umsetzen des charsets auf ISO-8859-1 löst zwar dieses spezielle Problem, charset ISO-8859-15 benötige ich aber unbedingt des Euro-Zeichens wegen. Kann mir jemand eine Lösung nennen bzw. weiß, was ich falsch mache?

    Offenbar hat der IE 5 Mac ein Problem mit dem (relativ..) neuen Zeichensatz iso-8859-15. Eine Alternative wäre utf-8, das muß aber erstens nicht besser funktionieren und zweitens braucht man erstmal einen Editor, der sowas speichert.

    Was genau spricht denn gegen die althergebrachten Umschreibungen à la ä und €? Es ist vielleicht mehr zu tippen, aber dafür funktioniert es garantiert mit jedem Browser (Ausnahme: das Eurozeichen, aber wer € nicht kennt, wird wahrscheinlich auch andere Formen des Eurozeichens nicht darstellen).

    Wo genau muß man <meta>-Angaben eigentlich einbinden, in den HEAD-Bereich oder ist das nicht genau spezifiziert?

    Wenn überhaupt, dann im <head>-Bereich. Die <meta>-Angaben mit http-equiv sind aber nur Ersatz für die jeweilige Angabe im Kopf der HTTP-Antwort. Sendet der Server bereits eine Content-Type:-Angabe mit beispielsweise iso-8859-1, ist Deine <meta>-Angabe zum Zeichensatz wirklungslos.
    Was Dein Server ausspukt, kannst Du entweder in seiner Konfiguration feststellen oder von außen mittels http://schroepl.net/cgi-bin/http_trace.pl.

    1. Hallo MüHa,

      Was genau spricht denn gegen die althergebrachten Umschreibungen à la ä und €?

      Dagegen spricht, dass die EINGABE eines Euro-Symbols durch einen Nutzer dann als Sonderzeichen gespeichert wird. Den Nutzer können wir schlecht bitten, HTML-Entitäten einzugeben.

      Wenn überhaupt, dann im <head>-Bereich.

      http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/charsets/charset4.asp

      "To apply a character set to an entire document, you must insert the meta element before the body element. For clarity, it should appear as the first element after head, so that all browsers can translate the meta element before the document is parsed. "

      Deswegen meine Rückfrage...

      Die <meta>-Angaben mit http-equiv sind aber nur Ersatz für die jeweilige Angabe im Kopf der HTTP-Antwort. Sendet der Server bereits eine Content-Type:-Angabe mit beispielsweise iso-8859-1, ist Deine <meta>-Angabe zum Zeichensatz wirklungslos.

      Das ist in der Tat ein guter Punkt, werde ich mir mal genauer ansehen, ob ich den HTTP-Header ändern kann.

      Danke für Deine Hilfe + schöne Grüsse, Ingo

      1. Was genau spricht denn gegen die althergebrachten Umschreibungen à la ä und €?

        Dagegen spricht, dass die EINGABE eines Euro-Symbols durch einen Nutzer dann als Sonderzeichen gespeichert wird. Den Nutzer können wir schlecht bitten, HTML-Entitäten einzugeben.

        Vollkommen richtig. Aber vielleicht gibt es doch eine Möglichkeit, den vom Benutzer eingesetzten Zeichensatz _eindeutig_ zu identifizieren und anschließend die HTML-Ausgabe entsprechend mit Umschreibungen zu gestalten.

        Falls die Eingaben über <form>-Elemente gemacht werden, kann man über das Attribut accept-charset Zeichensätze vorgeben (etwa "utf-8 iso-8859-15 iso-8859-1", siehe http://www.w3.org/TR/html401/interact/forms.html#h-17.3). Achte beim Einlesen der Formulardaten auf im aktuellen Zeichensatz nicht vorhandene Codes (Eurosymbol bei iso-8859-1), meistens kommen die in der Form "&#12345;".
        Für Zeichensatzkonvertierungen selbst steht übrigens die iconv-Bibliothek zur Verfügung, auch in einigen Skriptsprachen (http://www.gnu.org/software/libiconv/).

        Die Verwendung des richtigen Zeichensatzes im Web ist ein einziges Problem; die vielen als iso-8859-1 gekennzeichneten Eurosymbole an Position 128, die eigentlich aus windows-1252 stammen, sprechen für sich. Sämtliche großen Browser haben deshalb Kompatibilitätsmodi eingebaut, damit es nicht gar so auffällt.

        "To apply a character set to an entire document, you must insert the meta element before the body element. For clarity, it should appear as the first element after head, so that all browsers can translate the meta element before the document is parsed. "

        <meta> gehört meines Erachtens nach nur in den <head>-Bereich und der wiederum gehört sinnigerweise vor den <body>-Bereich. Die obige Erklärung ist insofern zwar richtig, aber auch etwas "um die Ecke".