'Decode `url_string` using urllib\'s url-unquote
algorithm. The returned value is always a unicode string.
See http://www.blooberry.com/indexdot/html/topics/urlencoding.htm for
more info on urlencoding.
So, when _decode_url() is called and take as input
u\'http://host.tld/%05%44\', it is encoded using the instance\'s _encoding
then it is applied the unquote routine and finally is decoded back to
unicode being u\'http://host.tld/Ã©\' the final result.
Something small to remember:
>>> urllib.unquote(\'ind%c3%a9x.html\').decode(\'utf-8\').encode(\'utf-8\')         == \'indÃ©x.html\'
True'

def _decode_url(self, url_string):

    enc = self._encoding
    if isinstance(url_string, unicode):
        url_string = url_string.encode(enc)
    dec_url = urllib.unquote(url_string)
    for (sch, repl) in self.SAFE_CHARS:
        dec_url = dec_url.replace(sch, repl)
    try:
        dec_url = dec_url.decode(UTF8)
    except UnicodeDecodeError:
        dec_url = dec_url.decode(enc, 'ignore')
    return dec_url
