Robbit: Mozilla reagiert nicht auf geändertes charset für JavaScript

Salute Kollegen,

in einem CMS ist im HEAD der charset utf-8 vorgegeben. Wenn ich nun ein externes (nicht konfigurierbares!) JavaScript einbinde, habe ich zunächst Fehler bei Umlauten und Scharf-s. Also füge ich beim Scriptaufruf ein "document.charset = "ISO-8859-1";". Darauf allerdings reagiert nur der IE (ausgerechnet!), im Mozilla Firefox bleibt die Darstellung wie gehabt.

Nach diesem drei Jahre alten Post (http://forum.de.selfhtml.org/archiv/2006/6/t131679/#m851851) scheint das Phänomen nicht unbekannt zu sein. Hat sich seither keine neue Lösung entwickelt? Bleibts dabei, daß nur der IE auf die lokale charset-Änderung anspricht?

Was kann ich sonst tun?

Spätösterliche Grüße :o)
-Rob.

  1. in einem CMS ist im HEAD der charset utf-8 vorgegeben. Wenn ich nun ein externes (nicht konfigurierbares!) JavaScript einbinde, habe ich zunächst Fehler bei Umlauten und Scharf-s. Also füge ich beim Scriptaufruf ein "document.charset = "ISO-8859-1";".

    Diese Angabe bezieht sich beim Setzen auf das gesamte Dokument. Du kannst sie nicht einfach ändern, schließlich ist UTF-8 die korrekte Dokument-Kodierung und wenn du den Browser später anweist, das Dokument als ISO-8859-1 zu verarbeiten, müsste es zur Fehldarstellungen im ganzen Dokument kommen.

    Das Script verwendet eine bestimmte Zeichenkodierung, und solange der Browser diese mitgeteilt bekommt, funktioniert alles prächtig. Der Webserver sollte die entsprechende Kodierung im HTTP-Header angeben (Content-Type: application/x-javascript; charset=ISO-8859-1). Das ist in der Webserver-Konfiguration einstellbar und der Bereitsteller des Scriptes sollte für eine solche sorgen.
    Zusätzlich kannst du im einbindenden script-Element ein charset-Attribut angeben:
    <script type="text/javascript" src="..." charset="ISO-8859-1"></script>
    Das ist allerdings nicht autoritativ, d.h. es überschreibt den Content-Type-Header nicht Wenn das nicht browserübergreifend funktioniert, dann muss der Bereitsteller des Scripts dafür sorgen, eine korrekte Kodierungsangabe mitzusenden.

    Mathias

  2. Tach,

    in einem CMS ist im HEAD der charset utf-8 vorgegeben. Wenn ich nun ein externes (nicht konfigurierbares!) JavaScript einbinde, habe ich zunächst Fehler bei Umlauten und Scharf-s.

    liefere die Javscript-Datei mit dem passenden Encoding aus.

    Also füge ich beim Scriptaufruf ein "document.charset = "ISO-8859-1";". Darauf allerdings reagiert nur der IE (ausgerechnet!), im Mozilla Firefox bleibt die Darstellung wie gehabt.

    document.charset gibt es in Javascript nicht, nur in JScript also ist es logisch, dass Mozilla da nicht drauf reagiert. Clientseitig per Javascript nachträglich das Encoding der übertragenen Daten zu ändern, ist allerdings auch eine reichlich komische Idee.

    mfg
    Woodfighter

    1. Salute,

      »» in einem CMS ist im HEAD der charset utf-8 vorgegeben. Wenn ich nun ein externes (nicht konfigurierbares!) JavaScript einbinde, habe ich zunächst Fehler bei Umlauten und Scharf-s.

      liefere die Javscript-Datei mit dem passenden Encoding aus.

      Welchen Teil von "nicht konfigurierbar!" hast Du denn nicht verstanden? :o)

      »» Also füge ich beim Scriptaufruf ein "document.charset = "ISO-8859-1";". Darauf allerdings reagiert nur der IE (ausgerechnet!), im Mozilla Firefox bleibt die Darstellung wie gehabt.

      document.charset gibt es in Javascript nicht, nur in JScript also ist es logisch, dass Mozilla da nicht drauf reagiert.

      Ah... Hier http://de.selfhtml.org/javascript/objekte/document.htm#charset ist es allerdings unter JavaScript notiert, hmm... Allerdings ist dort auch notiert, daß die Methode nur für den IE gilt.

      Clientseitig per Javascript nachträglich das Encoding der übertragenen Daten zu ändern, ist allerdings auch eine reichlich komische Idee.

      Das mag sein, aber wenn Du ein JavaScript-API für einen News-Feed hast, kannst (bzw. darfst) Du den eben nicht ändern. Daher...

      -R.

      1. Tach,

        »» in einem CMS ist im HEAD der charset utf-8 vorgegeben. Wenn ich nun ein externes (nicht konfigurierbares!) JavaScript einbinde, habe ich zunächst Fehler bei Umlauten und Scharf-s.

        liefere die Javscript-Datei mit dem passenden Encoding aus.

        Welchen Teil von "nicht konfigurierbar!" hast Du denn nicht verstanden? :o)

        du schriebst das Javascript sei nicht konfigurierbar, vom ausliefernden Webserver hast du nichts gesagt. Im Zweifelsfall mußt du halt selber Proxy spielen.

        Ah... Hier http://de.selfhtml.org/javascript/objekte/document.htm#charset ist es allerdings unter JavaScript notiert, hmm... Allerdings ist dort auch notiert, daß die Methode nur für den IE gilt.

        und es ist dort notiert, dass es JScript und nicht Javascript ist.

        mfg
        Woodfighter