如何使urllib.urlencode使用双引号而不是单引号?

Wes*_*ley 2 python

我有一个关于urlencode的问题.这是一个例子:

urllib.urlencode({"action":"task_exam_save_result","examid":5,"t2],False,2]],"spendTime":911},"submit":"true","summary":{"correct":0,"wrong":2}})
Run Code Online (Sandbox Code Playgroud)

所以,我明白了:

examresult=%7B%27spendTime%27%3A+911%2C+%27choice%27%3A+%5B%5B1593%2C+%5B0%5D%2C+False%2C+783%5D%2C+%5B1591%2C+%5B2%5D%2C+False%2C+2%5D%5D%7D&submit=true&summary=%7B%27wrong%27%3A+2%2C+%27correct%27%3A+0%7D&taskid=10&action=task_exam_save_result&examid=5
Run Code Online (Sandbox Code Playgroud)

然后,我将上面的字符串复制到http://tool.chinaz.com/tools/urlencode.aspx进行URL解码并得到:

examresult={'spendTime': 911, 'choice': [[1593, [0], false, 783],
[1591, [2], false, 2]]}&submit=true&summary={'wrong': 2, 'correct':
0}&taskid=10&action=task_exam_save_result&examid=5
Run Code Online (Sandbox Code Playgroud)

因此,每个双引号都成为单引号; 为什么?

我希望它保留双引号,因为我必须将解码后的字符串传输到其他编程语言,例如Java和Objective C,以进行解析,并且它们的字符串需要双引号.

我该怎么做呢?

Jie*_*ter 5

我不会使用urlencode here,但转换为JSON使用json.dumps()然后使用urlencode或b64encode使其在网址中使用是安全的.

  • json.dumps 获取字符串;所以,之后的 urlencode 不应该是 python 的 urllib.urlencode,它不接受字符串作为参数,是吗? (2认同)
  • 您似乎想在 `examresult` 参数中传递字符串,因此可以使用 `urllib.urlencode({'examResult': json.dumps({...})})` (2认同)