molily: Javascript "escape" wird durch "encodeURI" ersetzt?

Beitrag lesen

Hallo,

Wenn ich den Parameter selbst anfügt zB in einem Link, kann ich es korrekt kodieren - klar.

Ja, wenn du die URI selbst zusammenbaust oder es sich um ein GET-Formular handelt, kannst du die Kodierung einfach bestimmen.

Nur, wenn der User den Parameter ändert (in der URL), habe ich ja erstmal keinen Einfluß drauf.

Tja, wenn der Benutzer in der URI herumfuscht und keine Ahnung von URI-Kodierung hat (was man auch nicht erwarten kann), dann ist dein Script gearscht. Du kannst serverseitig höchstens tolerant sein und beide Kodierung annehmen. Mit mb_detect_encoding($string, 'UTF-8, ISO-8859-1') lässt sich z.B. erkennen, ob ein String korrektes UTF-8 ist oder bloß ISO-8859-1. (»k%F6ln« ist inkorrektes UTF-8, also ist es wohl ISO-8859-1.) Je nach Fall kannst du dann rekodieren.

Es gibt auch Möglichkeiten, ohne die eher selten installierte mbstring-Extension einen String auf gültiges UTF-8 zu prüfen, das wird im Kommentarbereich von http://de3.php.net/utf8-decode diskutiert. Aber ich glaube, mb_detect_encoding schnitt im Vergleich zu diversen Regulären Ausdrücken am besten ab.

Mathias