yel*_*cap 4 python urllib reserved url-encoding quote
parse中的函数可urllib.parse用于对 url 组件进行编码。但它的行为与标准 javascript 编码器不同。
在Python中
>>> import urllib
>>> urllib.parse.quote('(a+b)')
... '%28a%2Bb%29'
Run Code Online (Sandbox Code Playgroud)
在 JavaScript 中
>>> encodeURIComponent('(a+b)')
... "(a%2Bb)"
Run Code Online (Sandbox Code Playgroud)
为什么python函数在对url组件进行编码时更加“严格”?
如果我理解正确的话,括号不是网址中的保留字符。所以我不明白为什么它们在 urllib 解析函数中被转义。
默认情况下,Python 会对传递给的每个字符进行百分比编码,quote()除了_.-/. 然而,quote()是可调的。如果您想要严格的 RFC 3986 行为,请设置safe为'~':
urllib.parse.quote(string, safe='~')
Run Code Online (Sandbox Code Playgroud)
如果您想最低程度地匹配您所展示的 javascript-on-your-platform 行为(您没有说明它符合 ECMAScript 标准的哪些部分):
urllib.parse.quote(string, safe='()')
Run Code Online (Sandbox Code Playgroud)