当我使用这段代码来解析url查询参数时,代码自动转换为+到““:
from urllib.parse import urlparse, parse_qsl
if __name__ == '__main__':
parsed_url = urlparse("http://a.com?q=a+b")
query_params = dict(parse_qsl(parsed_url.query))
print(query_params.get('q'))
字符串
为什么会出现这种情况呢?是不是可以保持原来的+,不要转换。
1条答案
按热度按时间dzhpxtsq1#
根据W3C的官方URI specification,
+
s始终表示查询字符串中的空格:在查询字符串中,加号被保留为空格的简写符号。因此,必须对真实的加号进行编码。此方法用于使查询URI更容易在不允许空格的系统中传递。
因此,如果你希望它们被这样解码,你必须在查询字符串中将文字加号编码为
%2B
s:字符串
这将产生:
型