De l'docs:
urllib.quote(string[, safe])
Remplacer des caractères spéciaux dans la chaîne en utilisant l'évasion% xx. Les lettres, chiffres, et les caractères '_.-' ne sont jamais cités . Par défaut, cette fonction est destinée à citer la section de chemin du paramètre sécurité URL.The en option spécifie des caractères supplémentaires que ne doit pas être cité - sa valeur par défaut valeur est «/»
Ce signifie passer « » pour la sécurité résoudra votre premier numéro:
>>> urllib.quote('/test')
'/test'
>>> urllib.quote('/test', safe='')
'%2Ftest'
a propos de la deuxième question, il y a un rapport de bogue à ce sujet here. Apparemment, il a été fixé en python 3. Vous pouvez contourner par le codage UTF8 comme ceci:
>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller
D'ailleurs un coup d'oeil à urlencode
Notez que urllib.quote
déplacé à urllib.parse.quote
dans python3
Merci vous, tous les deux fonctionnait très bien. urlencode appelle simplement plusieurs fois quoteplus dans une boucle, ce qui n'est pas la normalisation correcte pour ma tâche (oauth). –
la spécification: [rfc 2396] (https://www.ietf.org/rfc/rfc2396.txt) définit ceux-ci comme réservés 'reserved ="; " | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," 'Ce qui est traité par urllib.quote. –
'urllib.quote' a été déplacé dans' urlib.parse.quote', depuis Python3. – Hibou57