Si je fais
url = "http://example.com?p=" + urllib.quote(query)
- Il n'encode pas "/" en "% 2F" (casse la normalisation OAuth)
- Il ne gère pas unicode (il lance une exception)
Y a-t-il une meilleure bibliothèque?
Si je fais
url = "http://example.com?p=" + urllib.quote(query)
Y a-t-il une meilleure bibliothèque?
À partir de la docs:
urllib.quote(string[, safe])
Remplacer des caractères spéciaux dans la chaîne de à l'aide de l' %xx échapper. Des lettres, des chiffres, et les caractères '_.-' ne sont jamais de cité. Par défaut, cette fonction est l'intention de citer le chemin de la section de l'URL.Le paramètre de sécurité en option spécifie d'autres caractères que ne doit pas être cité - son par défaut la valeur est '/'
Cela signifie que de passage " pour la sécurité permettra de résoudre votre première question:
>>> urllib.quote('/test')
'/test'
>>> urllib.quote('/test', '')
'%2Ftest'
Sur la deuxième question, il y a un rapport de bug à ce sujet ici. Apparemment, il a été fixé en python 3. Vous pouvez le contourner par l'encodage utf8 comme ceci:
>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller
Par la façon dont ont un look à la fonction urlencode
En Python 3, urllib.quote
a été déplacé vers urllib.parse.quote
et il gère unicode par défaut.
>>> from urllib.parse import quote
>>> quote('/test')
'/test'
>>> quote('/test', safe='')
'%2Ftest'
>>> quote('/El Niño/')
'/El%20Ni%C3%B1o/'
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.