为什么urllib.urlencode附加" 25"到结果?

时间:2015-11-30 16:07:09

标签: python percent-encoding

Python代码是:

user = "aabc" 
password = "yyy12%"
data = urllib.urlencode({"loginname": user, "nloginpwd": password})
print data

结果是:loginname=aabc&nloginpwd=yyy12%25

为什么25被添加到字符串的末尾?

2 个答案:

答案 0 :(得分:4)

%字符在网址中具有特殊含义;它用于启动转义序列。请参阅维基百科上的Percent-encoding article。然后必须对文字 %25进行编码,"%"是编码版本。来自维基百科页面:

  

因为百分比("%25")字符用作百分比编码八位字节的指示符,所以必须将百分比编码为%25,以便将该八位字节用作URI中的数据。

换句话说,%是一个编码的exit(0);字符。

答案 1 :(得分:3)

来自Wikipedia

  

因为百分比(“%”)字符用作百分比编码八位字节的指示符,所以它必须百分比编码为“%25”,以便将该八位字节用作URI中的数据。

简单示例:

>>> urllib.parse.quote('%')
'%25'