Javascript 为什么字符编码对URL很重要?

Javascript 为什么字符编码对URL很重要?,javascript,html,url,console,Javascript,Html,Url,Console,我目前正在学习JavaScript,我不明白为什么编码URL很重要 >>> var url = 'http://www.packtpub.com/scr ipt.php?q=this and that'; >>> encodeURI(url); ”http://www.packtpub.com/scr%20ipt.php?q=this%20and%20that“ 例如,在本例中,将第一个URL更改为后一个URL的目的是什么。这取决于您将如何使用该URL 当您

我目前正在学习JavaScript,我不明白为什么编码URL很重要

>>> var url = 'http://www.packtpub.com/scr ipt.php?q=this and that';
>>> encodeURI(url);
”http://www.packtpub.com/scr%20ipt.php?q=this%20and%20that“


例如,在本例中,将第一个URL更改为后一个URL的目的是什么。

这取决于您将如何使用该URL

当您仅使用document.location=url时,您不希望对其进行编码

如果您计划将该URL作为变量传递,那么是的,您希望对其进行编码,否则会混淆浏览器。例如:

看看这会如何让浏览器感到困惑


顺便说一下,不要在url或php文件中使用空格。我总是发现这会造成不必要的压力

这取决于您将如何使用该URL

当您仅使用document.location=url时,您不希望对其进行编码

如果您计划将该URL作为变量传递,那么是的,您希望对其进行编码,否则会混淆浏览器。例如:

看看这会如何让浏览器感到困惑


顺便说一下,不要在url或php文件中使用空格。我总是发现这会造成不必要的压力

根据RFC 3986标准,URL中只允许有限数量的字符。例如,如果URL中有空格,这将使URL无效,除非对其进行编码

通常,浏览器可以通过自己进行编码来处理未正确编码的URL,但作为web开发人员,这不是您应该依赖的


当使用URL作为另一个URL的参数时,URL编码也很重要。在这种情况下,URL的保留字符需要编码,而不仅仅是不允许的字符。但是,根据RFC 3986标准,在URL中不允许使用
encodeURI
,而是
encodeURIComponent

仅允许有限数量的字符。例如,如果URL中有空格,这将使URL无效,除非对其进行编码

通常,浏览器可以通过自己进行编码来处理未正确编码的URL,但作为web开发人员,这不是您应该依赖的


当使用URL作为另一个URL的参数时,URL编码也很重要。在这种情况下,URL的保留字符需要编码,而不仅仅是不允许的字符。但是,对于这一点,您不使用
encodeURI
,而是使用
encodeURIComponent

,因为如果不这样,就无法判断
是否是URL字符串的一部分,或者指示
获取
参数的开头。例如,否则就无法判断,
是URL字符串的一部分还是指示
GET
参数的开头。