如何在encodeURIComponent(“+”)中保持+符号?

时间:2016-08-03 14:41:27

标签: javascript

在代码的一部分中,我无法改变。函数encodeURIComponent()将在我传入的URL上执行,我的一个API调用中包含一个+符号,该符号是作为+号发送所必需的。现在它取代了“%2B”,这使API失败..

我尝试过使用escape和“%2B”以及我的+符号前面的反斜杠为“+”,但到目前为止没有任何内容。

如何使encodeURIComponent('+')返回+而不是“%2B”

感谢您的帮助

4 个答案:

答案 0 :(得分:0)

暂时换掉任意标记的加号,例如

<div style="position: relative; left: 0; top: 0;">
                            <img src="" width="225" height="140"  />
                            <img src="light bulb image" alt="member1" title="member1"
                                 style="position: relative; top: 0; left: 0;"/>
                            <img src="another gif image" style="position: absolute; top: 30px; left: 70px;"/>
                        </div>

给你:

encodeURIComponent("one £ + £ two".replace(/\+/g, '*PLUS*')).replace('*PLUS*', '+');

...即保留+,它也可以通过"one%20%C2%A3%20+%20%C2%A3%20two" 反复旅行。

答案 1 :(得分:0)

您无法在不更改代码的情况下执行此操作。 encodeURIComponent永远不会输出+个符号。

如果您或其他人可以更改代码,您可以使用this answer

encodeURIComponent(search).replace(/%20/g, "+");

然后在输入中使用您想要+的空格。

答案 2 :(得分:0)

通常不建议覆盖本机函数,但是您可以这样做,这将重新定义encodeURIComponent而不是转义加字符,否则转义相同的字符集。

class MyModelAdmin(admin.ModelAdmin):
    form = MyForm

    def get_form(self, request, *args, **kwargs):
        form = super(MyModelAdmin, self).get_form(request, *args, **kwargs)
        form.request = request
        return form

答案 3 :(得分:0)

由于您无法更改encodeURIComponent的行为,所以最简单的方法是将%2B-s替换为+-es:

encodeURIComponent('1+2=3').replace(/%2B/g, '+') //1+2%3D3

这是更有效的,因为它只需一次替换,并且不需要中间的“转义”,并且更简单,因为您不必重新实现encodeURIComponent并使用本机的 对于大型字符串甚至更快。