So kodieren Sie URL-Parameter in Python richtig: Beheben der Einschränkungen von „urllib.quote()' und „urllib.urlencode()'.

Barbara Streisand
Freigeben: 2024-10-26 03:28:03
Original
209 Leute haben es durchsucht

How to Properly Encode URL Parameters in Python:  Addressing Limitations of `urllib.quote()` and `urllib.urlencode()`

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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'
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!