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