在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()
函数对其进行解码时,+
仍然存在。
为什么?
是,当您将数据放入查询字符串时,它是URL编码;将空格转换为+
是正常的;查询参数使用application/x-www-form-urlencoded
form进行编码。
application/x-www-form-urlencoded
无法处理这一差异;只需使用decodeURIComponent()
首先用空格替换.replace()
字符:
+
请参见var xmlstr = decodeURIComponent(GetURLParameter("xml").replace(/\+/g, " "));
[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");
我将首先为URL编码XML: