Im Firefox kann man ja so schön onTheFly den Zeichensatz wechseln und da hab ich das einfach mal gemacht. Das Problem ist nun folgendes: Die Seite ist in UTF8 codiert. Die Seite schickt aber keine Information zum Zeichensatz mit, also nimmt der Browser den aktuelle System-Standard-Satz, meist ISO-8859-1 oder ISO-8859-15. In UTF8 codiert zeigt er die Umlaute und Sonderzeichen korrekt an.
Gut, was macht man dagegen? Da kannste von mehreren Seiten aus gehen:
1. Du gibst den Zeichensatz explizit in der HTML-Ausgabe mit an. Bei mir lief das dann einfach, indem ich folgendes in den Head der HTML mit reingepackt habe:
- Code: Select all
<meta http-equiv="content-type" content="text/html; charset=utf-8">
Nun weiß der Browser, was Sache ist, und experimentiert nicht.
2. Die eigentlich schönere Variante: Du escapest die Umlaute/Sonderzeichen bzw lässt sie escapen. Das kannst das per Hand umschreiben, aber einfacher gehts natürlich, wenn man es machen lässt:
- Code: Select all
string htmlentities ( string string [, int quote_style [, string charset]] )
Diese Funktion aus PHP nimmt nen String und ersetzt jedes Sonderzeichen durch sein HTML-Entity (ä -> ä , ...). Damit sollte jeder Browser eigentlich wissen, welches Zeichen gemeint ist, wenn ich mich nicht irre unabhängig vom Zeichensatz. Damit bleibt die Zeichensatzkollision allerdings bestehen, sie kommt aber nicht mehr zur Ausprägung.
3. Du änderst den Zeichensatz der HTML, die du schickst, auf nen normal-typisch-deutschen Zeichensatz, den jeder Browser von sich aus zumindest verstehen wird, zB ISO-8859-1. Wie das allerdings von sich ging, hab ich grad nicht zur Hand. Eventuell mal die PHP-Manual konsultieren.
Ich würd dann aber doch eher 2. und 1. empfehlen, das is dann die sauberste Methode. Dann haste auch international nicht mehr großartig Kompatibilitätsprobleme
Nicht jeder Fehler ist ein Bug ...