Tach!
Ich habe das Problem, dass ich per ajax eine .html Datei in ein Div hole. Umlaute werden als Fragezeichen dargestellt.
dann ist vermutlich das äußere Dokument in UTF-8 codiert, der nachdeladene Teil aber in einer anderen Codierung, möglicherweise ISO-8859-1.
Was kann ich da machen, bzw. ich muss doch einen ContentType definieren. Die Frage ist welche und wo?
Du musst dafür sorgen, dass die nachgeladenen Inhalte genauso codiert sind wie das Hauptdokument. Entweder du stellst sie generell auf UTF-8 um, oder du codierst im Javascript die empfangenen Daten um, bevor du sie ins DOM einfügst.
Ich habe es noch nicht ausprobiert, aber das scheint mir so nicht richtig zu sein. Nach meinem Überlegungen spielt doch die Zeichenkodierung nachdem der Browser ein Dokument gelesen hat keine Rolle mehr, weil er es für seine interne Verarbeitung sowieso in eine für ihn genehme Kodierung gebracht hat. Vermutlich wird das UTF-16 oder etwas ähnliches sein. Jedenfalls würde ich als Browser es als sehr ungünstig empfinden, zum Beispiel ein ISO-8859-1-Dokument mit jeder Menge NCRs oder Entitys drin in dieser Form zu belassen, um dann für alle Funktionen der Stringverarbeitung ständig umrechen zu müssen.
Auch kann es nicht angehen, dass sämtliche nachzuladende Ressourcen immer der Kodierung des Hauptdokuments entsprechen müssen, schließlich kann jede Ressource ja ihre eigene charset-Angabe im Content-Type-Header haben. Die soll dann nicht mehr gelten, wenn das Dokument von anderwo referenziert ist? Und was sollte geschehen, wenn ein Dokument von zwei anderen mit unterschiedlicher Kodierung nachgeladen wird? Nein, das kann es nicht sein, und das kann auch nicht anders sein, wenn man ein Dokument mit Ajax nachlädt. Das wäre nicht sehr sinnvoll.
Umkodieren in Javascript ist nicht vorgesehen, weil Javascript nicht mit Kodierungen in Berührung kommt. Es arbeitet nur mit Zeichen. Es ist keine Möglichkeit vorgesehen, mit Bytes zu arbeiten, was eine Umkodierung, vielleicht nicht unmöglich macht, aber doch sehr erschwert.
Die Lösung kann nach meinem Wissen und Verständnis nur sein: Korrekte Auszeichnung aller Ressourcen, sprich: Content-Type mit charset-Angabe, und die Ressourcen auch in dieser angegebenen Kodierung ausliefern.
dedlfix.