Ich habe viel Zeit damit verbracht, Neuling in Python zu sein.
Wie könnte ich jemals eine solche URL entschlüsseln:
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
zu diesem in Python 2.7: example.com?title==правовая+защита
url=urllib.unquote(url.encode("utf8"))
gibt etwas sehr Hässliches zurück.
Immer noch keine Lösung, jede Hilfe wird geschätzt.
Antworten:
Bei den Daten handelt es sich um UTF-8-codierte Bytes, die mit URL-Anführungszeichen maskiert wurden. Sie möchten also mit decodieren ,
urllib.parse.unquote()
wodurch die Decodierung von prozentual codierten Daten in UTF-8-Bytes und anschließend in Text transparent erfolgt:Demo:
Das Python 2-Äquivalent ist
urllib.unquote()
, aber dies gibt einen Bytestring zurück, sodass Sie manuell dekodieren müssten:quelle
+
ist ein Leerzeichen inx-www-form-urlencoded
Daten ; Sie würden verwendenurllib.parse.parse_qs()
, um das zu analysieren, oder verwendenurllib.parse.unquote_plus()
. Sie sollten jedoch nur in der Abfragezeichenfolge angezeigt werden, nicht im Rest der URL.Wenn Sie Python 3 verwenden, können Sie verwenden
urllib.parse
gibt:
quelle