application/x-www-form-urlencoded' 和空值的标准是什么?
不久前,我注意到在把一个映射 name: value
编码成 'application/x-www-form-urlencoded
格式时,它会变成这样(这里我用的是Python):
>>> from urllib import urlencode
>>> urlencode({'hello': '', 'blabla': 'hihi'})
'blabla=hihi&hello='
但是在解析的时候(至少在Python中),会把那些值为空的键值对给去掉:
>>> from urlparse import parse_qs
>>> parse_qs('blabla=hihi&hello=')
{'blabla': ['hihi']}
那么……这是标准的行为吗?我在哪里可以找到关于 www-form-urlencoded
应该如何解析的参考资料?我在网上查了一段时间,找到了关于URI的RFC文档、W3C的表单文档等等,但没有找到关于空值应该如何处理的信息。有没有人能给我指个方向???
1 个回答
4
据我所知,这里没有什么“标准”。在HTML规范中(正如你所发现的),只描述了浏览器应该如何编码表单数据。你想怎么处理空值,完全取决于你自己。
需要注意的是,urlparse.parse_qs()
有一个可选参数 keep_blank_values
,这个参数可以让你控制它如何处理这些空值:
>>> from urlparse import parse_qs
>>> parse_qs('blabla=hihi&hello=', keep_blank_values=True)
{'blabla': ['hihi'], 'hello': ['']}