Hi!
Habe ich auf einer meiner korrekt als UTF-8 kodierten Seiten einen Link à la .../€?q=€ [...]
Tippe ich genau denselben Request aber manuell in die Adresszeile des Browsers, sieht das Ergebnis (URL kodiert) so aus REQUEST_URI = /%E2%82%AC?q=%80
Schöner Scheibenkleister. Das ist mir in der Form noch nicht begegnet, aber nachvollziehbar. Sonderzeichen in URLs sind einfach Mist.
Das Problem ist dann ja u.a. auch, dass eine Erkennung der Kodierung per Script defacto nicht möglich ist, da '%80' in vielen Kodierungen "gültig" ist.
80h ist kein gültiges UTF-8. Eine mit 10 anfangende Bitfolge darf nicht als erstes Byte einer UTF-8-Sequenz stehen.
Oder hast du eine Idee/ einen Vorschlag zur Lösung des Problems?
Du kannst in dem Fall nur die Bestandteile der URL einzeln betrachtend verarbeiten, also Pfad getrennt vom Querystring.
BTW: Ich habe aufgrund dieser Probleme nochmal generell über Sonderzeichen (spez. Umlaute) in der URL nachgedacht. Ist es unter dem Gesichtspunkt der Usability nicht sehr "unfreundlich", denn alle User, die keine dt. Tastatur (bzw. dt. Tastaturlayout) haben, tun sich ja dann sehr schwer mit einer manuellen Eingabe, oder? Selbst wenn man die alternative Schreibweise (also bspw. "ae" anstelle von "ä") ebenfalls akzeptieren würde (z.B. mit dem rel="canonical" Attribut), müsste der jeweilige User das ja auch erstmal wissen. Oder kann man durchaus davon ausgehen, dass eh 99,xx% aller Besucher über SuMa- und sonstige Links kommen?
Das ist ein weiteres Problem, nicht nur, wenn du auch nicht Deutschsprechende als Zielgruppe im Auge hast sondern auch Touristen an fremden Tastaturen. Und das kannst du serverseitig gar nicht lösen (außer eben in der Beschränkung auf ASCII).
Lo!