用 JavaScript 对 URL 进行编码?

2022-08-29 21:49:11

如何使用JavaScript安全地对URL进行编码,以便将其放入GET字符串中?

var myUrl = "http://example.com/index.html?param=1&anotherParam=2";
var myOtherUrl = "http://example.com/index.html?url=" + myUrl;

我假设您需要在第二行上对变量进行编码?myUrl


答案 1

查看内置函数 encodeURIComponent(str)encodeURI(str)。
在你的情况下,这应该有效:

var myOtherUrl = 
       "http://example.com/index.html?url=" + encodeURIComponent(myUrl);

答案 2

您有三种选择:

  • escape()不会编码:@*/+

  • encodeURI()不会编码:~!@#$&*()=:/,;?+'

  • encodeURIComponent()不会编码:~!*()'

但是在您的情况下,如果要将URL传递到其他页面的参数中,则应使用or,但不要使用。GETescapeencodeURIComponentencodeURI

有关进一步的讨论,请参阅堆栈溢出问题最佳实践:转义或 encodeURI /encodeURIComponent