TS: URL Encoding wann nötig bzw. sinnvoll?

Beitrag lesen

Hello,

Du musst dabei auf jeden Fall zwischen der Kodierung für den URL-Kontext und der Kodierung für den HTML-Kontext unterscheiden.

Wenn es sich später um eine URL handeln soll, müssen außer SCHEME und DOMAIN (dafür gelten eigene Regeln) alle weiteren Daten URL-kodiert werden. Ausgenommen davon sind im Parameter-String die Zeichen ?&;=, die dort eigene Bedeutung haben. Dabei legt der angefragte Webserver fest, ob er ein & oder ein ; oder noch ein anderes Zeichen zur Trennung von Parametern (Name=Value) haben will.

Das bedeutet aber auch, dass man nicht einfach den kompletten String durch eine Kodierungsfunktion schicken darf, sondern dass man jeden Name und jeden Value separat kodieren muss. Ausnahme natürlich: die Kodierungsfunktion ist selber schlau genug, den String vorher zu parsen und jeden Name und jeden Value separat zu kodieren.

Wenn Du nun diesen kodierten String in einen HTML-Kontext setzt, muss dieser hierfür noch einmal speziell dafür vorbereitet werden. Hier darf man dann aber (z. B. in PHP) die Funktion htmlspecialchars(?, ENT_QUOTES) benutzen. Vorher bitte den Script-Kontext für die allgemeine Kodierung (utf-8) setzen, oder auch diesen noch in htmlspecialchars() angeben!

Das Ergebnis kannst Du dann in href="?" oder src="?" einsetzen. (?) steht hier für das Ergebnis.

Für das Scheme und die Domain gelten eigene Regeln. So werden z. B. vom Browser automatisch bereits deutsche Umlaute im Domainnamen so kodiert, dass die sogenannten Puny-Codes entstehen.

Bsp:

Liebe Grüße
Tom S.

--
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.