Javascript在Internet Explorer中将$替换为$ 00

时间:2014-09-26 14:25:50

标签: javascript string internet-explorer replace tapestry

正如预期的那样,我需要在使用它调用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',但无济于事。

非常感谢任何帮助。

1 个答案:

答案 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