Last week I encountered one of those problems that you just can't work out, but end up kicking yourself when you do as it's such a school-boy error.
I had written an Agent to accept and log requests for files before redirecting the user to the download. The file's name was passed as a paramater. All worked fine until one of the files contained an & in the name. Although I'd done all the usual stuff of encoding the file name before calling the agent the code was still only using the part of the file name before the &.
The reason it turns out was obvious and rooted in my own code in the WebSession class. The method called URLQueryString(), which works just like its @function equivalent, had been made to work with the value of the Query_String_Decoded field as the raw data. See the problem?
If you use that class in any databases you might want to go and change the way it uses the decoded query string field and use the normal Query_String field instead. The offending line looks like this:
Let Me.query = Me.document.Query_String_Decoded(0)
This has been a painful lesson for me as I've used the code in all and everything I've worked on recently -- such is my love for it -- and have had to work my way through them all, updating each Script Library.
It all reminds me though that I need to update the original download with this and the other improvements I've since made to the class. Others have improved on it too, which is always nice to see. Tanny O'Haley has for one. As has Michel Van Der Meiren, whose customised version shows how easy it is to tailor to the needs of your own application.