该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] 删除。
我来说两句