La fonction urllib.parse.quote (fonction urllib.quote en Python2) utilisée pour le codage d'URL n'encode pas le séparateur de chemin (/) par défaut.
>>> help(urllib.parse.quote)
#La chaîne de caractères spécifiée par l'argument sûr est exclue du codage.
quote(string, safe='/', encoding=None, errors=None)
quote('abc def') -> 'abc%20def'
(…)
By default, the quote function is intended for quoting the path
section of a URL. Thus, it will not encode '/'. This character
is reserved, but in typical usage the quote function is being
called on a path where the existing slash characters are used as
reserved characters.
Par conséquent, lors du codage d'une chaîne de caractères comprenant une URL avec l'API Twitter, etc., il est nécessaire de définir le deuxième argument (ou l'argument nommé safe) sur `` '' (caractère vide) `.
quote_safe
#Séparateur de chemin(/)N'est pas encodé
>>> urllib.parse.quote('http://hoge.com/api')
'http%3A//hoge.com/api'
#Séparateur de chemin(/)Est encodé
>>> urllib.parse.quote('http://hoge.com/api', '')
'http%3A%2F%2Fhoge.com%2Fapi'
>>> urllib.parse.quote('http://hoge.com/api', safe='')
'http%3A%2F%2Fhoge.com%2Fapi'
Recommended Posts