Internet Explorer中的Javascript将%替换为$00
正如预期的那样,在调用API之前,我需要对URI组件进行编码,但当它击中我们的服务器时,我们的后端框架(tapestry)过早地转换了空间: 我发现,如果我将URI%20更改为$0020,它就会正常工作。因此,下面的代码在Chrome和Firefox中工作,并将%转换为$00Internet Explorer中的Javascript将%替换为$00,javascript,string,internet-explorer,replace,tapestry,Javascript,String,Internet Explorer,Replace,Tapestry,正如预期的那样,在调用API之前,我需要对URI组件进行编码,但当它击中我们的服务器时,我们的后端框架(tapestry)过早地转换了空间: 我发现,如果我将URI%20更改为$0020,它就会正常工作。因此,下面的代码在Chrome和Firefox中工作,并将%转换为$00 function furtherEncode(uriComp) { var nonSafe = encodeURIComponent(uriComp); return nonSafe.replace(/%/g, "
function furtherEncode(uriComp) {
var nonSafe = encodeURIComponent(uriComp);
return nonSafe.replace(/%/g, "$00");
}
在InternetExplorer11(和IE10)中,它不进行替换
我试过/\x25/g
和/%/g
以及“$00”
和“$00”
,但都没有用
任何帮助都将不胜感激。您需要像这里这样的两个美元符号(在IE和Chrome中测试): 请参见此处的文档: 相关部分在“指定字符串作为参数”下定义:
这就是为什么你必须禁止空格。谢谢你修复了它。
"%".replace(/%/g, "$$00") /// returns "$00"
$$ | Inserts a "$".
$n | Where n or nn are decimal digits, inserts the nth parenthesized submatch string, provided the first argument was a RegExp object