molily: Sonderzeichen/Umlaute

Beitrag lesen

JavaScript schreibt die Umlaute in der Kodierung in Dein Dokument, in der sie im JavaScript-Code stehen. Wenn Du eine externe JavaScript-Datei benutzt, die z.B. in ISO-8859-1 kodiert ist, dann werden diese Umlaute auch in dieser Kodierung ins (X)HTML-Dokument geschrieben. Wenn das (X)HTML ebenfalls in ISO-8859-1 kodiert ist, dann passt ja alles. Kritisch wird es, wenn die Kodierungen nicht zusammenpassen.

Strings in JavaScript haben keine Kodierung. Der Browser dekodiert eine JavaScript-Ressource und die Strings liegen dann als Unicode-Zeichen vor. Wenn der Browser die korrekte Kodierung kennt und das Script entsprechend kodiert ist, dann stehen alle Zeichen korrekt zur Verfügung. Wenn das geklappt hat, ist das Thema Kodierung gegessen und alles weitere kein Problem mehr. Auf der Ebene des JavaScript-Programmes gibt es keine Kodierung mehr, man kann also nicht sagen "JavaScript schreibt Umlaute in einer Kodierung ins Dokument". Und es ist auch kein (prinzipielles) Problem, wenn ein externes JavaScript anders kodiert ist als das HTML-Dokument - sofern Kodierungsangaben dem Browser die unterschiedlichen Kodierungen mitteilen.

Kodierung ist eine Technik zur Übertragung von Zeichen. Das erste, was der Browser tut, ist eine Dekodierung, und erst dann wird das JavaScript ausgeführt. "Nicht zusammenpassende" Kodierungen gibt es daher nicht. Es ist höchstens möglich, dass der Browser von der erkannten Kodierung des HTML-Dokuments auf die Kodierung einer externen JavaScript-Datei schließt, wenn der Webserver keine abweichende Kodierungsangabe für das Script liefert.

Wie gesagt liegt das Problem wahrscheinlich woanders:
Welche Kodierung verwendet die Script-Datei tatsächlich? Wurde es korrekt gespeichert?
Erkennt der Browser de Kodierung korrekt? Gegebenenfalls muss der Server dazu gebracht werden, eine Kodierungsangabe im HTTP-Header zu senden. Alternativ kann man ein charset-Attribut im script-Tag notieren, um die (abweichende) Kodierung anzugeben.

<script type="..." src="..." charset="ISO-8859-1"></script>

Wie gesagt dürfte das nur nötig sein, wenn der Browser sie nicht erkennen kann.

Mathias