handle relative urls with scheme; handle extra ascii characters that should be escaped, with special smaller set for query string