Moin!
»» Nein, da würde ich widersprechen wollen. Es ist grundsätzlich empfehlenswert, sich auf genau ein Encoding festzulegen und das dann ohne Entities auf allen Seite durchzuziehen. Nur in Sonderfällen besteht eine der möglichen Lösungen darin, dem Umkodieren zu entgehen, indem Entities verwendet werden. Das funktioniert aber eigentlich nur dann 100% sauber, wenn die einzige Datenrichtung vom Server zum Browser ist - also ohne irgendwelche Formulare, die Daten auch wieder zurücksenden sollen.
Das trifft nur dann zu, wenn man die volle Kontrolle darüber hat, was der Server an Zeichensätzen ausliefert - und aus eigener, leidvoller Erfahrung kann ich bestätigen, dass man sich das nicht immer aussuchen kann.
Wenn der Server unabänderliche Vorgaben macht, dann hat man sich dem entweder anzupassen (wie ich schon schrieb: Auf ein Encoding festlegen und das durchziehen), oder man sucht sich einen Server, der weniger restriktiv ist. Egal was man tut: EIN Encoding wählen, und dabei bleiben.
Außerdem ist es in jedem Fall ratsam, Formulareingaben in mehrerer Hinsicht serverseitig zu validieren bzw. zu filtern, insbesondere auch in Bezug auf den Zeichensatz, da sonst Verarbeitungsfehler auftauchen können.
Diese Validierung ist hinsichtlich des Encodings nur leider sehr schwierig. Natürlich kann man versteckte Testfelder ins Formular packen, und deren real vom Browser gesendeten Wert mit dem ordnungsgemäßen Erwartungswert vergleichen - das einzige, was man dabei aber rausfindet ist, ob was kaputt gegangen ist, aber nicht, was. Und wenn man sich die falschen Textwerte auswählt, findet man gar nichts heraus.
Und von einer grundsätzlicheren Warte aus gesehen: Welchen Sinn sollte es haben, in einem Formular einer ISO-8859-1-Seite einen Versuch zu unternehmen, UTF-8 eingeben und versenden lassen zu wollen. Wenn der Server zu UTF-8 beim Seitengenerieren schon nicht in der Lage ist, wird er beim Verarbeiten noch größere Schwierigkeiten bekommen. Insofern klingt es unsinnig, hier durch Entitie-Einbindung Zeichen auszusenden, die niemals wieder den Weg zurück zum Server finden können.
- Sven Rautenberg