相关文章推荐
爱运动的围巾  ·  浏览器的同源策略 - Web 安全 | MDN·  3 周前    · 
年轻有为的弓箭  ·  使用js创建txt/js/json文件,并且 ...·  2 周前    · 
谦逊的毛豆  ·  JS导出文本为文本文件-天翼云·  2 周前    · 
睡不着的抽屉  ·  JavaScript实战 - ...·  1 周前    · 
任性的鸡蛋  ·  从隐藏div开始,然后使用Animate.c ...·  1 周前    · 
腼腆的柳树  ·  奥斯卡奖与六部苏俄电影_德尔苏·乌扎拉·  11 月前    · 
直爽的开水瓶  ·  生物技术与婚姻家庭立法 - 知乎·  1 年前    · 
心软的数据线  ·  ios信任苹果企业级应用有风险吗?_Store·  1 年前    · 
打篮球的冰棍  ·  95届奥斯卡奖提名揭晓,开始补片吧_腾讯新闻·  1 年前    · 
俊秀的鼠标垫  ·  经历换角后,露思新剧又撞衫《长月烬明》,未播 ...·  1 年前    · 
Code  ›  javascript - Python 的 urllib.parse.quote() 和 urllib.parse.unquote() 的等效 JavaScript 函数 -
python python函数 url javascript
https://segmentfault.com/q/1010000043028775
踢足球的青椒
1 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. Stack Overflow 翻译
  4. 问答详情

Python 的 urllib.parse.quote() 和 urllib.parse.unquote() 的等效 JavaScript 函数

社区维基
1
发布于
2022-12-09
新手上路,请多包涵

Python 的 urllib.parse.quote() 和 urllib.parse.unquote() 是否有任何等效的 JavaScript 函数?

我遇到的最接近的是 encodeURI() / encodeURIComponent() 和 escape() (及其相应的未编码函数),但它们不编码/解码据我所知,同一组特殊字符。

原文由 Cameron 发布,翻译遵循 CC BY-SA 4.0 许可协议

Stack Overflow 翻译 javascript python url encoding
阅读 351
2 个回答
得票 最新
社区维基
1
发布于
2022-12-09
✓ 已被采纳

好的,我想我将使用混合自定义函数集:

编码:使用 encodeURIComponent(),然后将斜杠放回原处。

解码:解码找到的任何 %hex 值。

这是我最终使用的更完整的变体(它也能正确处理 Unicode):

 function quoteUrl(url, safe) {
    if (typeof(safe) !== 'string') {
        safe = '/';    // Don't escape slashes by default
    url = encodeURIComponent(url);
    // Unescape characters that were in the safe list
    toUnencode = [  ];
    for (var i = safe.length - 1; i >= 0; --i) {
        var encoded = encodeURIComponent(safe[i]);
        if (encoded !== safe.charAt(i)) {    // Ignore safe char if it wasn't escaped
            toUnencode.push(encoded);
    url = url.replace(new RegExp(toUnencode.join('|'), 'ig'), decodeURIComponent);
    return url;
var unquoteUrl = decodeURIComponent;    // Make alias to have symmetric function names

请注意,如果在编码时不需要“安全”字符( '/' 在 Python 中默认为),那么你可以只使用内置的 encodeURIComponent() 和 decodeURIComponent() 直接发挥作用。

此外,如果字符串中有 Unicode 字符(即代码点 >= 128 的字符),那么为了保持与 JavaScript 的兼容性 encodeURIComponent() ,Python quote_url() 必须是:

 def quote_url(url, safe):
    """URL-encodes a string (either str (i.e. ASCII) or unicode);
    uses de-facto UTF-8 encoding to handle Unicode codepoints in given string.
    return urllib.quote(unicode(url).encode('utf-8'), safe)

而 unquote_url() 将是:

 def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    return urllib.unquote(url).decode('utf-8')
社区维基
1
发布于
2022-12-09
JavaScript               |  Python
-----------------------------------
encodeURI(str)           |  urllib.parse.quote(str, safe='~@#$&()*!+=:;,?/\'');
-----------------------------------
encodeURIComponent(str)  |  urllib.parse.quote(str, safe='~()*!\'')
 
推荐文章
爱运动的围巾  ·  浏览器的同源策略 - Web 安全 | MDN
3 周前
年轻有为的弓箭  ·  使用js创建txt/js/json文件,并且写入数据_js创建文件并写入
2 周前
谦逊的毛豆  ·  JS导出文本为文本文件-天翼云
2 周前
睡不着的抽屉  ·  JavaScript实战 - JavaScript 中实现线程锁_js 线程锁
1 周前
任性的鸡蛋  ·  从隐藏div开始,然后使用Animate.css fadeIn和fadeOut进行切换开发者社区
1 周前
腼腆的柳树  ·  奥斯卡奖与六部苏俄电影_德尔苏·乌扎拉
11 月前
直爽的开水瓶  ·  生物技术与婚姻家庭立法 - 知乎
1 年前
心软的数据线  ·  ios信任苹果企业级应用有风险吗?_Store
1 年前
打篮球的冰棍  ·  95届奥斯卡奖提名揭晓,开始补片吧_腾讯新闻
1 年前
俊秀的鼠标垫  ·  经历换角后,露思新剧又撞衫《长月烬明》,未播失分令人担忧_服装_红色_的设计
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号