2012-01-31 76 views
10

http://www.w3schools.com/tags/ref_urlencode.asp为什么URL编码,或哪些字符编码

由于网址通常包含ASCII集以外的字符,则URL具有 被转换成一个有效的ASCII格式。

但是这两个空格,/,%都是ASCII字符集的一部分,所以为什么要先编码它们呢?什么字符应该被编码?

+0

例如UTF-8字符或来自不同字符集的任何字符。 ASCII只是最小的字符范围。 – Halcyon 2012-01-31 20:18:30

+0

我不是很舒服,但我认为每个字符都应该被编码,这可能会有不同的含义(例如&和空格)。 不使用w3schools.com,它无关,与W3C和相当往往是错误的。 – 2012-01-31 20:19:14

回答

5

如上所述,空格在URL中无效。大多数浏览器自动对它们进行编码。然而...

您链接到的页面有一个示例,在“试用”一节中使用单词“Günter”。如果单词“Günter”作为查询字符串参数发送,则不起作用。因为“ü”不在标准的ASCII字符集中。

这意味着当有潜在的非ASCII字符时使用。一个示例可能是使用数据库中的数据创建超链接。假设代码创建一个链接到用户个人资料页面。非编码,该矿将是:

<a href="profile/?username=David Stratton">Your profile</a> 

而君特的将是

<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。

(请原谅,在这样的一个参数最精心设计的系统将无法通过用户名的事实,这只是一个样本,以澄清这一概念。)

+0

请不要只说*“它不会工作”*。另一方面,至少解释它是怎么做的,如果出了什么问题。 – yckart 2015-05-29 00:17:01

1

某些字符(如空格)需要转义才能确保有效的url。一旦产生这个肯定会产生GET参数的地方。

6

在URL中的字符应进行编码由于根据URL specification,某些字符具有特殊含义,因此某些字符是不允许的,并且某些字符在所有字符集中都不可表示。

请参阅this intro了解更多指导。

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

+0

对于规范/链接+1 :-) – The111 2014-04-22 17:45:12