“application/x-www-form-urlencoded”和空值的标准是什么?

seb*_*piq 5 html python standards http urlencode

不久前,我注意到当将映射编码name: value为时'application/x-www-form-urlencoded,它会呈现类似的内容(这里我使用 Python):

>>> from urllib import urlencode
>>> urlencode({'hello': '', 'blabla': 'hihi'})
'blabla=hihi&hello='
Run Code Online (Sandbox Code Playgroud)

但是解析(至少使用Python)只是删除具有空值的对:

>>> from urlparse import parse_qs
>>> parse_qs('blabla=hihi&hello=')
{'blabla': ['hihi']}
Run Code Online (Sandbox Code Playgroud)

那么...这是标准行为吗?www-form-urlencoded在哪里可以找到有关如何解析的参考?我用 google 搜索了一段时间,找到了 uris 的 RFC、表单的 W3c 文档等等,但没有找到关于如何处理空值的信息。有人可以给我指点吗???

Ste*_*ven 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': ['']}
Run Code Online (Sandbox Code Playgroud)