Gunnar Bittersmann: Problem mit Umlauten in URL- Parametern

Beitrag lesen

@@Kalle_B:

<a href='index.php?zp=p591&amp;ort_id=9669,9671,9674,9219,9216&amp;titel=Was ist los im Weschnitztal?&amp;utitel=F&uuml;rth, Rimbach, M&ouml;rlenbach, Birkenau, Weinheim'>hier</a>

Leerzeichen haben in einem URI nichts zu suchen, Umlaute auch nicht. [RFC3986] (Ja, bei dir sind Umlaute im Wert des 'href'-Attributs vorhanden, da der Browser ja aus '&uml;' 'ü' macht.)

Du hast Glück, dass dein Browser das korrigiert und aus ' ' '%20', aus 'ü' '%FC' und aus 'ö' '%F6' macht ...

&utitel=F%FCrth,%20Rimbach,%20M%F6rlenbach,%20Birkenau,%20Weinheim

... oder auch nicht. Die Frage ist, ob das so richtig ist, oder ob dein Server das nicht lieber UTF-8-codiert hätte; das 'ü' also nicht als '%FC', sondern als '%C3%BC'; das 'ö' nicht als '%F6', sondern als '%C3%B6'.

Außerdem darf IIRC im Query kein '?' vorkommen. Das muss also auch als '%3F' escapet werden.

Funktioniert es so?
<a href='index.php?zp=p591&amp;ort_id=9669,9671,9674,9219,9216&amp;titel=Was%20ist%20los%20im%20Weschnitztal%3F&amp;utitel=F%C3%BCrth,%20Rimbach,%20M%C3%B6rlenbach,%20Birkenau,%20Weinheim'>hier</a>

BTW, Hier klicken ist kein Link-Text.

Deshalb muss ich für die Ausgabe also wieder codieren:
$utitel = htmlentities( $utitel, ENT_QUOTES, 'UTF-8' );

Nein, musst du nicht. Im generierten HTML soll ja 'ü' stehen, nicht '&uml;'. [QA-ESCAPES]

Wo ist mein Denkfehler?

Du verwechselst den Kontext. URI vs. HTML.

Live long and prosper,
Gunnar

--
Flughafen in Tempelhof
findet jeder Hempel doof.