[development] Wrong usage of urlencode and drupal_urlencode

Wim Mostrey drupal at mostrey.be
Wed Apr 11 08:37:13 UTC 2007


 From the php.net handbook:
"This function is convenient when encoding a string to be used in a 
query part of a URL, as a convenient way to pass variables to the next 
page."

Currently the urlencode function is not only used for passing the url 
but also for displaying it, using l() for instance. Many modules 
experience errors because of this issue: upload, filefield, image, 
imagecache, .. Also just linking to a filename using l() fails. The 
value field always contains the correct filename (for example "this is 
a+test.pdf") while the actual link refers to the urlencoded filename 
(for example "this+is+a%2Btest.pdf" or "this+is+a+test.pdf") on which it 
breaks, since that file does not exist.

I feel that while url() shouldn't be altered, l() should urldecode (or 
have a drupal_urldecode) the output created by url(). Currently all 
those modules are fixing this issue themselves, or are not addressing 
the issue at all, while I believe core should address this.

Wim


More information about the development mailing list