问题 为什么url编码或要编码的字符


http://www.w3schools.com/tags/ref_urlencode.asp

由于URL通常包含ASCII集之外的字符,因此URL具有   要转换为有效的ASCII格式。

但是,两个空格/,%都是ASCII字符集的一部分,那么为什么要首先对它们进行编码呢?应编码哪些字符?


12244
2018-01-31 20:17


起源

例如,UTF-8字符,或来自不同字符集的任何字符。 ASCII几乎是最小的字符范围。 - Halcyon
我并不害羞,但我认为每个角色都应该被编码,这可能具有不同的含义(例如&和空格)。不要使用w3schools.com,它与w3c无关,而且经常出错。


答案:


如上所述,空格在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>

哪些是有效的URL。

(请原谅大多数精心设计的系统都不会在这样的参数中传递用户名。这只是澄清概念的一个示例。)


5
2018-01-31 20:27



请不要只说 “它不会起作用”。如果出现问题,至少要解释它的作用。 - yckart


应该对URL中的字符进行编码,因为某些字符具有特殊含义 URL规范,某些字符不允许,并且某些字符在所有字符集中都不可表示。

看到 这个介绍 多一点指导。

关于您提供的字符示例'/'保留用作URL中的组件分隔符,'%'用作转义字符。


7
2018-01-31 20:28



规格/链接+1 :-) - The111


干得好:

你什么时候应该使用escape而不是encodeURI / encodeURIComponent?

这是我发现的最好的解释,对我有帮助。


1
2018-01-31 20:23





某些字符(如空格)需要进行转义以确保有效的网址。一旦产生GET参数,肯定会出现很多问题。


1
2018-01-31 20:26