Drupal urlencode: Dealing with ampersand in filename

A bug poping out with some files failed to download, returning 404. Looking closer at the issue, turned out the files that failed contained ampersand "&" in the filename. PHP would translate the "&" in request path as a key in $_GET variable. So something like:-
$ wget http://www.somesite.com/system/files/fm/somefile_with_&_ampersand.pdfwould result in PHP $_GET as:-
array(
[q] => system/files/fm/somefile_with_
[_ampersand] =>
)urlencode'ing' the path is not enough because PHP would still translate that to an ampersand. drupal_urlencode solve this by double encode the path so when PHP try to parse it into $_GET variable it would still see the encoded version. Since we access the path using Drupal's q variable, Drupal alreading take care decoding it to the actual value.

