evilmoe
Goto Top

Urlencode Leerzeichen unterschiedlich ersetzt

Guten Abend,

mir ist etwas merkwürdiges aufgefallen. Auf einer Seite nutze ich urlencode und urldecode.
Das merkwürdige ist das dass Leerzeichen unterschiedlich ersetzt wird, manchmal ein "%20" und manchmal ein "+". Soweit ich das gelesen habe dürfte ausschließlich ein "%20" kommen und wenn ich rawurlencode verwende ein "+".

Nun woran könnte das liegen? Gibt es eine PHP Einstellung dafür?


Sven

Content-Key: 193480

Url: https://administrator.de/contentid/193480

Printed on: April 19, 2024 at 07:04 o'clock

Member: nxclass
nxclass Oct 30, 2012 at 08:23:29 (UTC)
Goto Top
Formulardaten in URLs werden zu "+", reine URL Teile zu %20

  • multipart/form-data MIME encoding und application/x-www-form-urlencoded wird Space zu "+"
  • rawurlencode "%20"
Member: EvilMoe
EvilMoe Oct 30, 2012 at 08:25:46 (UTC)
Goto Top
Hallo,

es handelt sich dabei nicht um Formulare.
Es geht um dynamische Links die damit escapet werden.


Sven
Member: bytecounter
bytecounter Oct 30, 2012 at 08:50:40 (UTC)
Goto Top
Dann wären ein paar Infos mehr nicht schlecht. Ich hätte auch vermutet, dass es an Formulardaten liegt.

lg
Member: nxclass
nxclass Oct 30, 2012 updated at 22:53:14 (UTC)
Goto Top
Möglich dass nur "+" (altes encoding) verwendet wird wenn keine Sonderzeichen in dem zu "encodenden String" enthalten sind.
Am besten mal eine Liste mit Beispielen generieren.

edit:
'www.google.de/s p a c e/?t e s t'  
  • rawurlencode() alle spaces werden zu %20
  • urlencode() alle werden zu +

Evtl. ist das ein anzeige Problem - beachte das viele Browser den Code nochmal "Nachformatieren"
Member: EvilMoe
EvilMoe Oct 31, 2012 at 21:30:35 (UTC)
Goto Top
Das Problem ist leider doch etwas komplexer.
Wenn ich so ein Beispiel mache erscheint der richtige Output.

Ich verwende als Template und Cache Engine SMARTY. Ich verwende überall im Code NUR urlencode, KEINE andere Funktionen. Trotzdem sehe ich manchmal ein "%20" statt ein "+" in der URL. Vielleicht liegt es auch an SMARTY, ich weiß es nicht.