dedlfix: Umlaute und Sonderzeichen ändern

Beitrag lesen

Hi!

echo urlencode('Märchen');
Ausgabe: M%C3%A4rchen
ja, *das* ist nun eindeutig UTF-8. Dein Script ist also in UTF-8 codiert.

Wie ich vermutet habe.

Scriptdatei (*.php):         in UTF-8 codiert
Falsche Info im HTTP-Header: ISO-8859-1 (vermutlich, hast du aber immer noch nicht verraten)
Ersatzinfo im meta-Element:  ISO-8859-1

Es gibt keinen direkten Zusammenhang zwischen der Script-Kodierung und der Kodierung der damit erzeugten Ausgabe. Wenn die keine Nicht-ASCII-Zeichen enthält, ist diese sowieso sowohl ISO-8859-irgendwas als auch UTF-8 (und ASCII sowieso). Aber abgesehen von diesem Sonderfall kann man ja mit utf8_decode() aus UTF-8-Daten ISO-8859-1-Daten machen (ggf. mit Datenverlust) und hätte somit eine Kodierung der Seite, die der Angabe in den Kopfdaten entspricht. Nur wenn man direkt im Script notierte Nicht-ASCII-Zeichen direkt ausgibt, kommt es zur Diskrepanz bei der Anzeige im Browser.

Davon unberührt bleibt jedoch das Problem des OP, denn dafür interessieren nur die im Formular eingegebenen Daten und die im Script notierten Vergleichswerte (welche ja nicht zur Ausgabe gelangen sollen).

Dein Browser geht also nach dem Empfang des Dokuments von einer ISO-Codierung aus, also sendet er auch die POST-Daten wieder in ISO. Im Dokument vorkommende Umlaute müssten dann eigentlich auch falsch angezeigt werden - kannst du das bestätigen?

Deine Vermutung im zweiten Satz könnte zutreffen, muss aber nicht.

Lo!