为什么 urllib.parse.quote 对 url 中的非保留字符进行编码?

黄帽

parse函数urllib.parse可被用于编码URL组件。但它的行为不同于标准的 javascript 编码器。

在蟒蛇中

>>> import urllib
>>> urllib.parse.quote('(a+b)')
... '%28a%2Bb%29'

在 JavaScript 中

>>> encodeURIComponent('(a+b)')
... "(a%2Bb)"

为什么python函数在编码url组件时更“严格”?

如果我理解正确,括号不是网址中的保留字符。所以我不明白为什么它们在 urllib 解析函数中被转义。

考伯特

RFC 3986 开始保留括号

通过默认情况下,Python将百分号编码每个字符传递给quote()除了_.-/但是,quote()是可调的。如果您想要严格的 RFC 3986 行为,请设置safe'~'

urllib.parse.quote(string, safe='~')

如果您想最低限度地匹配您展示的 javascript-on-your-platform 的行为(您没有说明它符合哪个 ECMAScript 标准的哪些部分):

urllib.parse.quote(string, safe='()')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在urllib.quote之后,问号仍保留在url中

python 2.7中的等效urllib.parse.quote()

Python 3 如何解决 urllib.parse.urlencode 在 Python 3.4.2 中缺少 quote_via

urllib.parse.quote不会采用utf8

有urllib.parse.quote的幂等版本吗?

为什么 urllib.parse 在所有情况下都不能正确拆分 URL <scheme>:<number> ?

Python:导入urllib.quote

urllib.quote()引发KeyError

为什么urllib.parse.urlencode不能将'_'更改为%5F?

为什么url.Parse不填充URL.RawPath?

PHP-为什么parse_url()在/ search / publication_year:2019中返回false?

我可以在python 2.6.5中为urllib.quote和urllib.unquote使用可用于Unicode的替代方法吗?

如何使用urllib.parse.urlencode编码纬度和经度?

python urllib.parse不保留路径部分

urllib2.quote无法正常工作

无法urllib.urlen在python中编码URL

无法urllib.urlen在python中编码URL

python 2.7中的等效urllib.parse.unquote()

select中的quote是做什么用的?

为什么 angularjs url 对我的 POST 参数进行编码?

为什么CURL --data-urlencode不对URL进行编码

为什么“ float”是JavaScript中的保留字?

为什么(汽车``(ab))评估为'quote?

使用urllib读取url时出现编码错误

使用url通过urllib python请求时出现编码问题

Python文档:urllib.request.urlopen(URL,data = None,[timeout,] *,cafile = None中的方括号是什么意思?

URL 允许以特殊字符结尾。为什么?

为什么我能够在python 3 urllib.request中读取HEAD http请求?

为什么urllib.request这么慢?