For example, 'why?' becomes 'why=3F'.
How do I fix that?
I tried doing a basic =~ s/=3F/?/ for the $Config{'subject'} variable, but it didn't work.
If the offender was the form submitting the subject, then your =~ s/=3F/?/ should have fixed it. But you could check... Have a look at the html page that is calling the script, and, if there is any javascript pre-processing the form, check what the javascript does.
If you are using the formmail.pl, then I doubt that is the problem, either. But again, you could check... modify the success form (e.g. the sub return_html) to print $Config{'subject'}.