Thanks for the input. I am using the QtmhRdStin api to parse the query_string. Yes, the conversion mode was a typo. My config says %%EBCDIC/MIXED%%.
QtmhRdStin does not parse anything. It just reads the standard input stream of the program.
The reason that characters are encoded is so that they're not confused with delimiters. If QtmhRdStin converted them from %xx to actual characters, you would no longer be able to tell the difference between the delimiters and the encoded characters.
For example, consider a form that asks who to ship a package to. It'd have a field for the ship-to name and the city. In the "name" field, you key "John & Mary". In the city field, you key "Chicago". This is what gets sent from the browser to the HTTP server:
name=John+%26+Mary&City=ChicagoIf the HTTP server (Apache or anything else) would convert the %26 to the & character, you'd have this:
name=John & Mary&City=ChicagoNow you have a problem. & is supposed to be a delimiter that separates one field from another! Notice that there's a & between the value of the "name" field and the "City" field. That's what & is for... it's a separator. If you change %26 to &, now "Mary" appears to be a field by itself.
You can only decode the hex values AFTER you've parsed it into fields and values. Therefore, it's not possible for QtmhRdStin() to do it!