URL-Parameter mit prozentualer Kodierung in Python kodieren
Bei der prozentualen Kodierung von URL-Parametern zur Vermeidung von Fehlern und zur Sicherstellung einer ordnungsgemäßen Normalisierung wird die eingebaute in der Funktion urllib.quote() kann unzureichend sein.
Standardkodierungsauslassung:
Verwendung von urllib.quote() wie folgt:
url = "http://example.com?p=" + urllib.quote(query)
Die Codierung entscheidender Zeichen wie / bis / wird weggelassen, was zu Problemen mit der OAuth-Normalisierung führt.
Unicode-Unterstützungsmangel:
Darüber hinaus werden Unicode-Zeichenfolgen nicht verarbeitet, was dazu führt Ausnahmen beim Versuch, Nicht-ASCII-Zeichen zu kodieren.
Verbesserte Kodierung mit urllib.parse.quote() und sicheren Parametern:
Um diese Einschränkungen zu beheben, verwenden Sie urllib. parse.quote() aus Python 3, das eine Lösung bietet:
urllib.parse.quote(string, safe='/', encoding=None, errors=None)
Der sichere Parameter ist standardmäßig „/“, aber die Angabe einer leeren Zeichenfolge deaktiviert zusätzliche ASCII-Zeichenausschlüsse und stellt so die ordnungsgemäße Kodierung von / sicher:
urllib.parse.quote('/test', safe='') # Encodes '/' to '%2F'
Behebung der Unicode-Verarbeitung in Python 2:
In Python 2 gab es einen Unicode-Verarbeitungsfehler mit urllib.quote(). Um dies zu umgehen, kodieren Sie die Zeichenfolge manuell als UTF-8, bevor Sie die Prozentkodierung anwenden:
query = urllib.quote(u"Müller".encode('utf8')) print urllib.unquote(query).decode('utf8') # Outputs: Müller
Alternative: urllib.urlencode()
Für a Für einen einfacheren Ansatz sollten Sie die Verwendung von urllib.urlencode() in Betracht ziehen, das sowohl die Prozentkodierung als auch Unicode automatisch verarbeitet:
encoded_params = urllib.urlencode({'p': query}) # Properly encodes '/' and supports Unicode
Das obige ist der detaillierte Inhalt vonSo kodieren Sie URL-Parameter in Python richtig: Beheben der Einschränkungen von „urllib.quote()' und „urllib.urlencode()'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!