Python 的 urllib.parse.quote()
和 urllib.parse.unquote()
是否有任何等效的 JavaScript 函数?
我遇到的最接近的是 encodeURI()
/ encodeURIComponent()
和 escape()
(及其相应的未编码函数),但它们不编码/解码据我所知,同一组特殊字符。
原文由 Cameron 发布,翻译遵循 CC BY-SA 4.0 许可协议
Python 的 urllib.parse.quote()
和 urllib.parse.unquote()
是否有任何等效的 JavaScript 函数?
我遇到的最接近的是 encodeURI()
/ encodeURIComponent()
和 escape()
(及其相应的未编码函数),但它们不编码/解码据我所知,同一组特殊字符。
原文由 Cameron 发布,翻译遵循 CC BY-SA 4.0 许可协议
JavaScript | Python
-----------------------------------
encodeURI(str) | urllib.parse.quote(str, safe='~@#$&()*!+=:;,?/\'');
-----------------------------------
encodeURIComponent(str) | urllib.parse.quote(str, safe='~()*!\'')
在 Python 3.7+ 上,您可以从 — 中删除 ~
safe=
。
原文由 mjhm 发布,翻译遵循 CC BY-SA 4.0 许可协议
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
3 回答3.1k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
好的,我想我将使用混合自定义函数集:
编码:使用 encodeURIComponent(),然后将斜杠放回原处。
解码:解码找到的任何 %hex 值。
这是我最终使用的更完整的变体(它也能正确处理 Unicode):
请注意,如果在编码时不需要“安全”字符(
'/'
在 Python 中默认为),那么你可以只使用内置的encodeURIComponent()
和decodeURIComponent()
直接发挥作用。此外,如果字符串中有 Unicode 字符(即代码点 >= 128 的字符),那么为了保持与 JavaScript 的兼容性
encodeURIComponent()
,Pythonquote_url()
必须是:而
unquote_url()
将是: