Hello,
Für URL-Kodierung benutzt du am besten urlencode bzw. rawurlencode.
Ob das "am besten" ist, ist mMn Philosphie, denn die codierten URLs sind nicht mehr sehr menschenfreundlich, wenn sie lauter %XY enthalten. Eine Url ist leichter merkbar, wenn man sich auf einen begrenzten ASCII-Zeichenvorrat beschränkt.
Das ist zumindest die beste Variante, um dem Kontext-Wechsel zu begegnen.
Das will ich auch keinesfalls bestreiten. Das sollte immer als letzte Aktion durchgeführt werden.
Verzierungen, zum Beispiel die Ersetzung von Umlauten, sollten vor dem Kontext-Wechsel passieren.
Und wenn man alle Ersetzungen passend vorgenommen hat, sollten sich die Strings vor und nach dem rawurlencode() auch nicht mehr unterscheiden.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg