Comment encoder correctement les paramètres d'URL en Python : résoudre les limitations de `urllib.quote()` et `urllib.urlencode()`

Barbara Streisand
Libérer: 2024-10-26 03:28:03
original
209 Les gens l'ont consulté

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

Encoder les paramètres d'URL avec un codage en pourcentage en Python

Lors du codage en pourcentage des paramètres d'URL pour éviter les erreurs et garantir une normalisation appropriée, le dans urllib.quote(), la fonction peut échouer.

Omission d'encodage par défaut :

Utiliser urllib.quote() comme suit :

url = "http://example.com?p=" + urllib.quote(query)
Copier après la connexion

Omet l'encodage des caractères cruciaux comme / vers /, ce qui entraîne des problèmes avec la normalisation OAuth.

Déficience de la prise en charge d'Unicode :

De plus, il ne parvient pas à gérer les chaînes Unicode, ce qui entraîne exceptions lors de la tentative d'encodage de caractères non-ASCII.

Encodage amélioré avec urllib.parse.quote() et paramètre sécurisé :

Pour remédier à ces limitations, utilisez urllib. parse.quote() de Python 3, qui fournit une solution :

urllib.parse.quote(string, safe='/', encoding=None, errors=None)
Copier après la connexion

Le paramètre safe est par défaut '/', mais la spécification d'une chaîne vide désactive les exclusions de caractères ASCII supplémentaires, garantissant ainsi un encodage correct de / :

urllib.parse.quote('/test', safe='') # Encodes '/' to '%2F'
Copier après la connexion

Correction de la gestion Unicode dans Python 2 :

Dans Python 2, il y avait un bug de gestion Unicode avec urllib.quote(). Pour contourner ce problème, encodez manuellement la chaîne au format UTF-8 avant d'appliquer le codage en pourcentage :

query = urllib.quote(u"Müller".encode('utf8'))
print urllib.unquote(query).decode('utf8') # Outputs: Müller
Copier après la connexion

Alternative : urllib.urlencode()

Pour un approche plus simple, envisagez d'utiliser urllib.urlencode(), qui gère automatiquement à la fois le codage en pourcentage et Unicode :

encoded_params = urllib.urlencode({'p': query}) # Properly encodes '/' and supports Unicode
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!