Heim  >  Artikel  >  Backend-Entwicklung  >  So kodieren Sie URL-Parameter in Python richtig: Beheben der Einschränkungen von „urllib.quote()“ und „urllib.urlencode()“.

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

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 03:28:03191Durchsuche

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)

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!

Stellungnahme:
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