编码URL中的加号(+)

问题描述 投票:0回答:3

在Web应用程序中,我将XML文件的内容作为URL参数的一部分发送(可能不是最佳设计,但现在我受其限制)。因此地址看起来像这样:

http://localhost:5000/fill?xml=XXXXXXXXXXXXX

由Flask的url_for('url', xml=xml)生成。

而且我正在客户端执行此操作:

  var img = document.getElementById('preview');
  var xmlstr = decodeURIComponent(GetURLParameter("xml"));
  var xml = $.parseXML(xmlstr);

自然,XML文件的内容将被编码。但是文件中的所有空格都转换为加号+。当我使用$.parseXML()函数对其进行解码时,+仍然存在。

为什么?

jquery xml url flask
3个回答
2
投票

是,当您将数据放入查询字符串时,它是URL编码;将空格转换为+是正常的;查询参数使用application/x-www-form-urlencoded form进行编码。

application/x-www-form-urlencoded无法处理这一差异;只需使用decodeURIComponent()首先用空格替换.replace()字符:

+

请参见var xmlstr = decodeURIComponent(GetURLParameter("xml").replace(/\+/g, " "));


0
投票

[2020年,我建议使用How can I get query string values in JavaScript?的本机实现来处理此旧版编码问题。从v10(URLSearchParams)开始,目前基本上每个浏览器(除IE之外,通常都是IE)和NodeJS都支持它。

简单地做:

see here

为您处理所有编码和解码。

在此处查看文档:let myUrl = new URL("http://my.url.here?with=query&xml=..."); let xmlStr = (new URLSearchParams(myUrl.search)).get("xml");


-1
投票

我将首先为URL编码XML:

© www.soinside.com 2019 - 2024. All rights reserved.