为什么python改变了原来的参数

why does python change the original parameter

我想发送一个http请求,但是参数有问题,下面是我的代码:

my_url="mysite.com/api"
payload = {'start':"2017-04-01%2000:00:00",'end':"017-04-01%2023:59:59"}
r=requests.get(my_url,params=payload)
print r.request.url

发送的url为"mysite.com/api?start=2017-04-01%252000%3A00%3A00&end=2017-04-01%252023%3A59%3A59',参数已更改。谁能帮帮我?

Python 是 URL 为您编码的信息。某些字符在 HTTP 传输期间是不允许的(因为它们在协议中具有特定功能)。如果你想使用像 :</code>(space) 这样的非法字符,那么你可以 URL 将它们编码为 <code>%3A%20。 URL 编码是标准化的,因此您可以发送您的信息(post 编码),然后服务器将接收它并对其进行解码,从而使他们收到您的原始信息。

这里有更深入的分析: https://www.thoughtco.com/encoding-urls-3467463