在代码的一部分中,我无法改变。函数encodeURIComponent()
将在我传入的URL上执行,我的一个API调用中包含一个+符号,该符号是作为+号发送所必需的。现在它取代了“%2B”,这使API失败..
我尝试过使用escape和“%2B”以及我的+符号前面的反斜杠为“+”,但到目前为止没有任何内容。
如何使encodeURIComponent('+')返回+而不是“%2B”
感谢您的帮助
答案 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
并使用本机的 对于大型字符串甚至更快。