J'ai passé beaucoup de temps en tant que débutant en Python.
Comment pourrais-je jamais décoder une telle 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
à celui-ci en python 2.7: example.com?title==правовая+защита
url=urllib.unquote(url.encode("utf8"))
renvoie quelque chose de très laid.
Toujours pas de solution, toute aide est appréciée.
Réponses:
Les données sont des octets encodés en UTF-8 échappés avec des citations d'URL, donc vous voulez décoder , avec
urllib.parse.unquote()
, qui gère le décodage des données encodées en pourcentage en octets UTF-8 puis en texte, de manière transparente:Démo:
L'équivalent de Python 2 l'est
urllib.unquote()
, mais cela renvoie un bytestring, donc vous devrez décoder manuellement:la source
+
est un espace dans lesx-www-form-urlencoded
données ; vous utiliseriezurllib.parse.parse_qs()
pour analyser cela, ou utiliserurllib.parse.unquote_plus()
. Mais ils ne doivent apparaître que dans la chaîne de requête, pas dans le reste de l'URL.Si vous utilisez Python 3, vous pouvez utiliser
urllib.parse
donne:
la source