When WS accepts POST arguments, they come in from the browser in URL-encoded form. WS decodes this and passes a 2-column decoded matrix to APL. However, it doesn't seem to be doing a very complete job of decoding.
There are a number of special characters that must be URL-encoded when passing them as data (and a few others are recommended). Regular alphanumerics and a few other characters may be passed directly without encoding. However, it is permitted to hex-encode (%HH) any data characters, even if they are not required to be encoded.
From the looks of things, WS only decodes the required-to-be-encoded characters. If other characters (like "-") are passed in hex form, they are not decoded in the APL array. This isn't usually needed, but it's technically invalid and such encodings should always be decoded.
I ran into this tonight because I was doing my own encoding and was erring on the side of caution because I wasn't sure what was required and what wasn't. Therefore, I'd like to:
(a) request that all hex-encoded characters be decoded by the time they're passed to APL, and
(b) until that time, can you provide me a list of characters that you're currently decoding so I'll know what to encode and what not to?