ChrisB: Umlaut der URL wird nicht erkannt

Beitrag lesen

Hi,

Nachdem ich das abgeschickt habe, erscheint der Parameter in der Adresszeile so: &ORT=bad%20d%FCrkheim demnach ist %FC das ü.

ü in UTF-8 url-kodiert wäre %C3%BC.

Auf der HTML-Seite (UTF-8 codiert) sieht die Ausgabe so aus:
bad d�rkheim

Nachvollziehbar, dieser Inhalt liegt ja auch nicht in UTF-8 vor.

Aha, dachte ich, du musst den GET- Parameter noch nach UTF-8 wandeln:
mb_convert_encoding ( trim( $_GET['ORT'] ), 'UTF-8', 'auto' )

Nun wird aber das ü verschluckt:
bad drkheim

Wie sieht denn die Konfiguration der mbstring-Funktionen aus?

Ich muss Umlaute erkennen, damit Orte verlinkt werden. Was habe ich falsch gemacht oder nicht bedacht?

Wenn du die Links ausgegeben hast, aus denen diese Abfragen resultieren - dann hast du vergessen, sie selber URL-gerecht zu kodieren, und zwar in der Zeichenkodierung, in der sie bei dir vorliegen; und hast die URL-Kodierung dem Client überlassen, der aber von einer anderen Zeichenkodierung ausging.

Wenn die Abfragen von anderswo kommen, dann kannst du da auf trivialem Wege nicht viel gegen machen - es sind einfach Requests nach Daten, die bei dir unter dieser Adresse nicht existieren.

Mehr Aufwand kann man natürlich betreiben, wenn man möchte - wie Gunther schon andeutete, Kodierung des angefragten Identifiers auf UTF-8 zu "prüfen" versuchen, und wenn das erfolglos ist, dann eine andere Kodierung zu "raten", und unter Verwendung dieser nachzuschauen, ob man in seinem Datenbestand was findet.
Ob dieser Aufwand es wert ist, kommt darauf an, wie sehr das konkrete Projekt es sich leisten kann/will, Anfragen auf verpfuschte Requests (durch wessen Schuld* auch immer) mit einem leicht vor den Kopf stossenden 404 zu beantworten.

MfG ChrisB

* Ausser eigener, die wäre kaum entschuldbar, siehe oben.

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.