Mailinglisten-Archive |
Manuel Hossfeld schrieb am Donnerstag, den 27. Mai 1999: > BTW: Weiß eigentlich jemand, wo genau der Unterschied zwischen > urlencode() und rawurlencode() liegt? Die Frage hab' ich mir auch gestellt, als ich die beiden Funktionen entdeckt hatte. :) > Die Doku liest sich an der Stelle ja sinngemäß wie "bei urlencode > werden spaces durch + codiert, wohingegen bei rawurlencode space > durch + codiert werden"... Häh? rawurlencode kodiert Leerzeichen als %20. Das ist der einzige Unterschied zu urlencode, wo ein Plus erzeugt würde. Zum Testen: for($i=0; $i<=255; $i++) { $c = chr($i); $u1 = urlencode($c); $u2 = rawurlencode($c); if ($i<32 or $i>=127 and $i<160) { $c = " "; } printf("%3d %s : %-3s %-3s %s\n", $i, $c, $u1, $u2, $u1==$u2); } Hintergrund: Die Kodierung von Leerzeichen als Plus war eigentlich nie so per Standard vorgesehen, aber Mosaic, einer der ersten WWW-Browser, hatte es so implementiert - wahrscheinlich, damit derart kodierte URLs etwas besser lesbar sind. Die im Standard RFC 1738 definierte URL-Kodierung hat jedenfalls diese Sonderregel für Spaces nicht. Wenn man also nicht sicher weiß, nach welcher der beiden Konventionen der Empfänger eine URL-Kodierung dekodieren wird, sollte man sicherheitshalber "rawurlencode" verwenden, denn dann kann beim Dekodieren nichts schiefgehen. Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ > PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7 "A rainy day is as beautiful as a sunny one, only in another way"
php::bar PHP Wiki - Listenarchive