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

fir*_*ird 12 html javascript asp.net web

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

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

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

PHe*_*erg 8

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

请参阅此简介以获得更多指导.

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


Dav*_*vid 7

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

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

它意味着在可能存在非ASCII字符时使用.一个示例可能是使用数据库中的数据创建超链接.假设代码创建了指向用户配置文件页面的链接.未编码,我的将是:

<a href="profile/?username=David Stratton">Your profile</a>
Run Code Online (Sandbox Code Playgroud)

而Günter将是

<a href="profile/?username=Günter">Your profile</a>
Run Code Online (Sandbox Code Playgroud)

我的,大多数浏览器都可以处理 Günter,可能不是.

编码,这些将成为

<a href="profile/?username=David%20Stratton">Your profile</a>
Run Code Online (Sandbox Code Playgroud)

<a href="profile/?username=G%FCnter">Your profile</a>
Run Code Online (Sandbox Code Playgroud)

哪些是有效的URL.

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