Passei muito tempo, tanto quanto eu sou novato em Python.
Como eu poderia decodificar esse URL:
example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0
para este em python 2.7: example.com?title==правовая+защита
url=urllib.unquote(url.encode("utf8"))
está retornando algo muito feio.
Ainda sem solução, qualquer ajuda é apreciada.
Respostas:
Os dados são bytes codificados em UTF-8 e escapados com a citação de URL. Portanto, você deseja decodificar , with
urllib.parse.unquote()
, que manipula a decodificação de dados codificados em porcentagem para bytes UTF-8 e, em seguida, para texto, de forma transparente:Demo:
O equivalente em Python 2 é
urllib.unquote()
, mas isso retorna uma cadeia de bytes, portanto você precisará decodificar manualmente:fonte
+
é um espaço nosx-www-form-urlencoded
dados ; você usariaurllib.parse.parse_qs()
para analisar isso ou usarurllib.parse.unquote_plus()
. Mas eles devem aparecer apenas na string de consulta, não no restante da URL.Se você estiver usando Python 3, poderá usar
urllib.parse
dá:
fonte