Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kodiere ich URL-Parameter in Python richtig?

Wie kodiere ich URL-Parameter in Python richtig?

DDD
DDDOriginal
2024-10-27 07:00:03954Durchsuche

How to Properly Encode URL Parameters in Python?

URL-Parameter in Python kodieren

URLs enthalten oft Parameter, die kodiert werden müssen, um Fehler zu vermeiden und die Kompatibilität aufrechtzuerhalten. In Python wird zu diesem Zweck häufig die Funktion urllib.quote() verwendet. Allerdings gibt es bestimmte Einschränkungen:

  • Unvollständige Codierung: urllib.quote() kann das Zeichen „/“ nicht codieren, wodurch die OAuth-Normalisierung unterbrochen werden kann.
  • Unicode-Unterstützungsprobleme:Es werden Ausnahmen ausgelöst, wenn versucht wird, Unicode-Zeichenfolgen zu verarbeiten.

Verbesserte Codierung mit urllib.parse.quote()

Die Python 3-Dokumentation schlägt die Verwendung von urllib.parse.quote() vor:

<code class="python">urllib.parse.quote(string, safe='/', encoding=None, errors=None)</code>

Diese Funktion bietet eine bessere Codierung, indem sie die Angabe zusätzlicher Zeichen ohne Anführungszeichen ermöglicht. Standardmäßig enthält der sichere Parameter „/“. Die sichere Übergabe einer leeren Zeichenfolge löst das erste Problem:

<code class="python">>>> import urllib.parse
>>> urllib.parse.quote('/test', safe='')
'%2Ftest'</code>

Unicode-Handhabung

Das zweite Problem mit der Unicode-Unterstützung wurde in Python 3 behoben. Für Python 2 , können Sie Unicode-Zeichenfolgen als UTF-8 kodieren, um das Problem zu umgehen:

<code class="python">>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller</code>

Alternativer Ansatz: urlencode()

Der Einfachheit halber sollten Sie erwägen, urlencode( ), anstatt jeden Parameter manuell prozentual zu kodieren. Es kodiert automatisch Schlüssel-Wert-Paare mit Unterstützung für Unicode und benutzerdefinierte Trennzeichen:

<code class="python">>>> import urllib.parse
>>> params = urllib.parse.urlencode({'name': 'John Doe'})
'name=John+Doe'</code>

Das obige ist der detaillierte Inhalt vonWie kodiere ich URL-Parameter in Python richtig?. 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