正如预期的那样,我需要在使用它调用API之前对URI组件进行编码,但是当它在我们的服务器上的某个地方到达时我们的后端框架(tapestry)过早地转换空格:Java URLEncoding / Decoding URL Spaces with dashes
我发现如果我将URI%20更改为$ 0020就可以了。因此,以下代码适用于Chrome和Firefox,并将%转换为$ 00。
function furtherEncode(uriComp) {
var nonSafe = encodeURIComponent(uriComp);
return nonSafe.replace(/%/g, "$00");
}
在Internet Explorer 11(和IE10)中,它不进行替换。
我尝试了/\x25/g
和/%/g
以及"$00"
和'$00'
,但无济于事。
非常感谢任何帮助。
答案 0 :(得分:0)
你需要有两个美元符号(在IE和Chrome中测试):
"%".replace(/%/g, "$$00") /// returns "$00"
请参阅此处的文档:docs
相关部分在“将字符串指定为参数”下定义:
$$ | Inserts a "$".
$n | Where n or nn are decimal digits, inserts the nth parenthesized submatch string, provided the first argument was a RegExp object