http://www.w3schools.com/tags/ref_urlencode.asp
由于URL通常包含ASCII集之外的字符,因此URL具有 转换为有效的ASCII格式。
但是两个空格/,%都是ASCII字符集的一部分,那么为什么要首先对它们进行编码呢?应编码哪些字符?
答案 0 :(得分:8)
URL中的字符应该被编码,因为根据URL specification,某些字符具有特殊含义,不允许某些字符,并且某些字符在所有字符集中都不可表示。
有关更多指导,请参阅this intro。
关于您提供的字符示例'/'保留用作URL中的组件分隔符,'%'用作转义字符。
答案 1 :(得分:6)
如上所述,空格在URL中无效。大多数浏览器会自动对其进行编码。然而...
您链接到的页面上有一个使用“试试我”部分中的“Günter”一词的示例。如果单词“Günter”作为查询字符串参数发送,则不起作用。因为“ü”不在标准ASCII字符集中。
当有可能存在非ASCII字符时,可以使用它。一个示例可能是使用数据库中的数据创建超链接。假设代码创建了指向用户配置文件页面的链接。未编码,我的将是:
<a href="profile/?username=David Stratton">Your profile</a>
而Günter将是
<a href="profile/?username=Günter">Your profile</a>
我的,大多数浏览器都可以处理。 Günter,可能不是。
编码,这些将成为
<a href="profile/?username=David%20Stratton">Your profile</a>
和
<a href="profile/?username=G%FCnter">Your profile</a>
是有效的网址。
(请原谅大多数精心设计的系统都不会在这样的参数中传递用户名。这只是澄清概念的一个示例。)
答案 2 :(得分:1)
你走了:
When are you supposed to use escape instead of encodeURI / encodeURIComponent?
这是我找到的最好的解释,对我有帮助。
答案 3 :(得分:1)
某些字符(例如空格)需要进行转义以确保有效的网址。一旦产生GET参数,肯定会出现很多地方。