Goetz: Umlaute; Sonderzeichen in Verbindung mit document.title

Hallo,

ich möchte, dass sich die jeweils geladene Seite eines Frames mit ihrem Titel (der aus einigen aus der Navigation herrührenden Variablen generiert wird) oben in der Fensterleiste einträgt.

Aus einem Frameset heraus:
top.document.title= "Förderung: " + Thema + ": " + Anzeige;
Soweit geht's auch.

Es gibt nur ein Problem: Sobald ich maskierte Sonderzeichen (also zB. ö) verwende, die stehen dort direkt, oder kommen auch als Inhalt der Variablen vor, erscheinen diese ganz ungerührt oben in der Titelzeile, aber eben NICHT umgewandelt!

Verwende ich die gleichen Variablen direkt im Body, sogar auf 'ner sich bewegenden Ebene über .innerHTML, dann funktioniert's. An den Variablen scheint's also nicht zu liegen. An DOCTYPE oder CHARSET auch nicht.

Woran liegt das, ist das Standard? Hat jemand eine Lösungsidee?

Das Problem tritt auf in IE, Firefox, Netscape, Safari, ... gestestet unter OSX.
Folgende Zeilen wurden verwendet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-language" content="de">

Falls ihr helfen könntet, würd ich mich freuen!

Götz

  1. Hallo Goetz,

    Woran liegt das, ist das Standard? Hat jemand eine Lösungsidee?
    [...]
    Falls ihr helfen könntet, würd ich mich freuen!

    also ich hab keine Ahnung, ich heiße nur gleich wie Du ;)

    Grüße aus Karlsruhe,
    Götz

    --
    Losung für Sonntag, 4. Juni 2006
    Fürchte dich nicht, denn ich bin mit dir und will dich segnen. (1. Mose 26,24)
    Dem, der überschwänglich tun kann über alles hinaus, was wir bitten oder verstehen, nach der Kraft, die in uns wirkt, dem sei Ehre in der Gemeinde und in Christus Jesus zu aller Zeit, von Ewigkeit zu Ewigkeit! Amen. (Epheser 3,20-21)
    (Losungslink)
  2. Hello out there!

    Es gibt nur ein Problem: Sobald ich maskierte Sonderzeichen (also zB. &ouml;) verwende,

    Warum verwendest du Zeichen-Entity-Referenzen? “It is almost always preferable to use an encoding that allows you to represent the characters in their normal form, rather than using character entities or NCRs.” [QA-ESCAPES]

    Und warum verwendest du Frames?? Da gibt es nicht nur ein Problem.

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
  3. Hallo Götz,

    top.document.title= "F&ouml;rderung: " + Thema + ": " + Anzeige;

    Es gibt nur ein Problem: Sobald ich maskierte Sonderzeichen (also zB. &ouml;) verwende, die stehen dort direkt, oder kommen auch als Inhalt der Variablen vor, erscheinen diese ganz ungerührt oben in der Titelzeile, aber eben NICHT umgewandelt!

    natürlich. Innerhalb von Javascript hat die HTML-Codierung von Sonderzeichen nichts verloren. Javascript interpretiert einen String exakt so, wie er im Quelltext steht.

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    Warum treibst du überhaupt den Aufwand, diese Zeichen codieren zu wollen, wenn du doch mit ISO-8859-1 einen Zeichensatz verwendest, der diese Zeichen direkt unterstützt? Dann schreib sie doch im Klartext, das macht auch den Quellcode besser lesbar.

    Schönen Abend noch,
     Martin

    --
    Die letzten Worte des stotternden Beifahrers:
    Frei... frei... frei... freilich kommt da was!!
    1. Hello out there!

      Innerhalb von Javascript hat die HTML-Codierung von Sonderzeichen nichts verloren. Javascript interpretiert einen String exakt so, wie er im Quelltext steht.

      Das ist abhängig von PCDATA vs. CDATA.

      http://gangstaplaya.de/TEST/pcdata-cdata ('application/xhtml+xml'-fähiger UA erforderlich)

      […] diese Zeichen codieren zu wollen, wenn du doch mit ISO-8859-1 einen Zeichensatz verwendest, der diese Zeichen direkt unterstützt? Dann schreib sie doch im Klartext […]

      Erster! ;-b

      See ya up the road,
      Gunnar

      --
      “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

      Warum treibst du überhaupt den Aufwand, diese Zeichen codieren zu wollen, wenn du doch mit ISO-8859-1 einen Zeichensatz verwendest, der diese Zeichen direkt unterstützt? Dann schreib sie doch im Klartext, das macht auch den Quellcode besser lesbar.

      Hallo Martin, ja das habe ich natürlich als erstes versucht. Nur, in diesem Falle funktioniert das eben nicht. Schreibe ich sie im Klartext, dann erscheinen diese Zeichen überhaupt nicht im Titel! Sie fehlen einfach! Was läuft da falsch??

      Viele Grüsse,

      Götz

      1. Hallo,

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

        Warum treibst du überhaupt den Aufwand, diese Zeichen codieren zu wollen, wenn du doch mit ISO-8859-1 einen Zeichensatz verwendest, der diese Zeichen direkt unterstützt? Dann schreib sie doch im Klartext, das macht auch den Quellcode besser lesbar.

        Hallo Martin, ja das habe ich natürlich als erstes versucht. Nur, in diesem Falle funktioniert das eben nicht. Schreibe ich sie im Klartext, dann erscheinen diese Zeichen überhaupt nicht im Titel! Sie fehlen einfach! Was läuft da falsch??

        Wie jetzt? Die JavaScript-Anweisung:

        document.title="Förderung";

        ergibt im Fenstertitel "Frderung", oder wie?

        Oder ergibt sie "Förderung"? Das wäre nämlich erklärbar, wenn Du den Quellcode in UTF-8 encoding gespeichert hättest, aber als ISO-8859-1 ausliefern lässt.

        Oder ergibt sie "F?rung" oder "F�rderung"? Das wäre dann der Fall, wenn Dein Quelltext zwar ISO-8859-1 encodiert gespeichert ist, aber der Setver den HTTP-Response-Header "Content-Type: text/html; charset=UTF-8" sendet.

        Zeig das mal online irgendwo.

        viele Grüße

        Axel

        1. Hi Axel,

          ja, genau.
          document.title="Förderung";
          ergibt im Fenstertitel "Frderung"

          Es hat offensichtlich etwas mit den Codierungen zu tun, nach vielen Tests, aber nicht beim Ausliefern oder was in der Datei steht, sondern einzig, wenn ich im BROWSER "westeuropäisch, MacOSLateinisch" (Safari) oder "Westlich, MacRoman" (Firefox) einstelle funktionierts. Ist dort aber Standard, Automatisch, oder ISO 8559-1 ausgewählt, was bei den meisten DE Browsernutzern der Fall sein dürfte, gehts eben nicht. Das ist halt nicht akzeptabel. Bisher haben wir keine vernünftige Lösung gefunden, auch escape und unescape klang verheißungsvoll, aber bringen uns nicht weiter.

          Danke euch allen bisher für die netten Tipps! Das mit PCDATA etc. verstehe ich nicht.

          Liebe Grüsse,

          Götz

          1. Hallo,

            ja, genau.
            document.title="Förderung";
            ergibt im Fenstertitel "Frderung"

            Hm, das ist weder UTF-8 vs. ISO-8859-1 noch umgekehrt. Es ist offensichtlich EncodingMACX vs. ISO-8859-1.

            Es hat offensichtlich etwas mit den Codierungen zu tun,

            Ja, mit Sicherheit. Die Zeichen in der HTML- und JavaScript-Ressource sind in einem anderen Encoding gespeichert, als der Server dem Browser via Content-Type-Header mitteilt.

            nach vielen Tests, aber nicht beim Ausliefern oder was in der Datei steht, sondern einzig, wenn ich im BROWSER "westeuropäisch, MacOSLateinisch" (Safari) oder "Westlich, MacRoman" (Firefox) einstelle funktionierts.

            Argh! Ein Mac! ;-)
            Mit welchem Editor wurde die HTML-Datei erstellt? Kann man in diesem Editor das Encoding (Codierung, Charset, Zeichensatz) einstellen? Welcher ist dort eingestellt?

            Ist dort aber Standard, Automatisch, oder ISO 8559-1 ausgewählt, was bei den meisten DE Browsernutzern der Fall sein dürfte, gehts eben nicht. Das ist halt nicht akzeptabel. Bisher haben wir keine vernünftige Lösung gefunden, auch escape und unescape klang verheißungsvoll, aber bringen uns nicht weiter.

            Ein immer funktionierender Workaround wäre

            document.title="F\u00F6rderung";

            Erläuterung:

            &ouml; == &#246; == &#xF6; == "\u00F6" http://de.selfhtml.org/html/referenz/zeichen.htm#benannte_iso8859_1.

            viele Grüße

            Axel

            1. Hallo Alex,

              Argh! Ein Mac! ;-)

              macht euch nur lustig, ihr werdet schon sehen! ;-)

              Mit welchem Editor wurde die HTML-Datei erstellt? Kann man in diesem Editor das Encoding (Codierung, Charset, Zeichensatz) einstellen? Welcher ist dort eingestellt?

              mit Subethaedit. Manchmal nehme ich auch Textwrangler. Also das kann man dort umstellen, bewirkt aber nichts.

              Ein immer funktionierender Workaround wäre
              document.title="F\u00F6rderung";
              Erläuterung:
              &ouml; == &#246; == &#xF6; == "\u00F6" http://de.selfhtml.org/html/referenz/zeichen.htm#benannte_iso8859_1.

              DANKE! Damit werde ich es jetzt probieren. Ich schreibe ein kleines Script, welches mit replace() die Zeichenketten austauscht. (da ich die Variablen ja auch im Body verwende und dort der html parser verantwortlich ist.)

              Mal sehn ob das funktioniert.

              Viele Grüsse,

              Götz