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

时间:2012-01-31 20:17:16

标签: javascript asp.net html web

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

  

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

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

4 个答案:

答案 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参数,肯定会出现很多地方。