Python urlencode不编码特殊字符

Gan*_*ute 5 python urlencode python-2.7

我正在形成一个帖子请求.

mydict = {'key1': 'value@1', 'key2': 'value@2'}
encoded_dict = urllib.urlencode(mydict)
Run Code Online (Sandbox Code Playgroud)

这将导致

key1=value%401&key2=value%402
Run Code Online (Sandbox Code Playgroud)

我真正想要的是

key1=value@1&key2=value@2
Run Code Online (Sandbox Code Playgroud)

还有其他方法吗?

Joh*_*ooy 4

如果您想做自己的事情,则必须编写自己的编码器。例如:

mydict = {'key1': 'value@1', 'key2': 'value@2'}
>>> "&".join("{}={}".format(*i) for i in mydict.items())
'key2=value@2&key1=value@1'
Run Code Online (Sandbox Code Playgroud)

但为什么不直接使用 JSON 呢?

  • 好吧,如果 OP 想使用这种编码来对“GET”查询字符串的 URL 数据进行编码,他可以使用“urllib.quote_plus(mydict, safe='@')”。但正如您在评论中所说,这对于“POST”请求没有任何意义。 (3认同)