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)
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)
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'
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
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
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!