Comment encoder correctement les paramètres d'URL en Python ?

DDD
Libérer: 2024-10-27 07:00:03
original
1030 Les gens l'ont consulté

How to Properly Encode URL Parameters in Python?

Encodage des paramètres d'URL en Python

Les URL contiennent souvent des paramètres qui doivent être codés pour éviter les erreurs et maintenir la compatibilité. En Python, la fonction urllib.quote() est couramment utilisée à cet effet. Cependant, il présente certaines limites :

  • Encodage incomplet : urllib.quote() ne parvient pas à encoder le caractère "/", ce qui peut interrompre la normalisation OAuth.
  • Problèmes de prise en charge d'Unicode : Il génère des exceptions lorsque vous essayez de gérer des chaînes Unicode.

Encodage amélioré avec urllib.parse.quote()

La documentation Python 3 suggère d'utiliser urllib.parse.quote() :

<code class="python">urllib.parse.quote(string, safe='/', encoding=None, errors=None)</code>
Copier après la connexion

Cette fonction offre un meilleur encodage en permettant à la spécification de caractères supplémentaires de rester sans guillemets. Par défaut, le paramètre safe inclut "/". Passer une chaîne vide pour sécuriser résout le premier problème :

<code class="python">>>> import urllib.parse
>>> urllib.parse.quote('/test', safe='')
'%2Ftest'</code>
Copier après la connexion

Gestion d'Unicode

Le deuxième problème avec la prise en charge d'Unicode a été résolu dans Python 3. Pour Python 2 , vous pouvez encoder des chaînes Unicode au format UTF-8 pour contourner le problème :

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

Approche alternative : urlencode()

Pour plus de commodité, envisagez d'utiliser urlencode( ) au lieu de coder manuellement chaque paramètre en pourcentage. Il encode automatiquement les paires clé-valeur, avec prise en charge d'Unicode et des délimiteurs personnalisés :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal