为什么我们使用 UrlEncode

Why we use UrlEncode

我通常在任何带有参数值的页面重定向之前使用代码 _uri = Server.UrlEncode(_uri);,但我不知道使用 UrlEncode 的意义 this.I 想知道使用 UrlEncode 的好处。

URLEncode returns a string in which all non-alphanumeric characters other than – (hyphen) _ (underscore), and . (period) have been replaced with a percent (%) sign followed by two hex digits that correspond to the charactor code and spaces encoded as plus (+) signs. Spaces can alternatively be encoded as %20. 20 is (16*2)+(1*0)=32 in decimal, which is the ASCII code for space.

例子

如果你写

Response.Write(Server.URLEncode("http://www.technologycrowds.com"));

那么结果就是这样

http%3A%2F%2Fwww%2Etechnologycrowdst%2Ecom

URL 编码确保所有浏览器都能正确传输 URL strings.Characters 中的文本,例如问号 (?)、与号 (&)、斜杠 (/)、和空格可能会被某些浏览器截断或损坏。

参见 Microsoft 文档:https://msdn.microsoft.com/en-us/library/zttxte6w(v=vs.110).aspx

考虑这样的 URL:

http://example.com/index.aspx?redirectUrl=http://example.com/index.aspx?someValue=123

你会如何解析 URL?哪个 :// 将协议与地址分开?哪个 ? 将地址与值分开?它会很快变得混乱,因为查询字符串值中使用的字符在 URLs.

中具有重要意义

相反,考虑这个版本:

http://example.com/index.aspx?redirectUrl=http%3A%2F%2Fexample.com%2Findex.aspx%3FsomeValue%3D123

现在,查询字符串值中使用的 none 个字符具有其他重要的 URL 含义。它只是一个字符串,因此可以轻松解析整个 URL。

URL-编码值允许我们将这些值视为,而不是URL本身的一部分。