Hi!
Aus einer Tabelle lese ich ein Datum aus. Damit ich es als get-Parameter übergeben kann, nehme ich die "." (Punkte) raus. Bleiben noch Leerzeichen übrig. Mit Url-Encode habe ich dann myPage.php?eintrag=11+Apr+2011.
Genauso ist es für den Querystring definiert. Leerzeichen sind als + zu notieren, der "Rest" als %xx.
Wenn ich dann einen Facebook-Like-Button erstelle(n muss), kommt da raus
myPage.php%3Feintrag%3D11%2BApr%2B2011
Nur dann, wenn du doppelt kodierst. Dann ist auch das Querystring-Fragezeichen als %3F notiert. Den Fall hat man, wenn man eine vollständige URL als Parameter in eine andere URL schreiben will. Das ist im Prinzip nicht weiter tragisch, sondern sogar richtig. Das % in den durch die erste Kodierung zu %xx gewordenen Zeichen muss (wie dein +) noch einmal kodiert werden, was zu %25xx führt. Das Ganze wird dann von zwei Verarbeitern aufgelöst, Der eine dekodiert die Gesamt-URL und übergibt die darin enthaltene URL an den zweiten Prozess, der die zweite Kodierung auflöst.
Ich muss also die Leerzeichen auch rauslöschen, weil die zu "+" encodiert werden, was aber wiederum zu %2B encodiert wird. Ich dachte mal %20 wäre das Leerzeichen, finde aber im PHP-Manual dass "+" historisch das encoding für " " ist. Gibts da irgendwas sinniges zu zu sagen? Eine andere/bessere Funktion zum encodieren?
Ich hab dazu was im Kontextwechsel-Artikel geschrieben. Beachte auch die Fußnote [2] hinter dem "eigentlich".
Lo!