2

给定 url /Page.aspx?a=b&title=apples+%26+pearsRequest.Url属性返回/Page.aspx?a=b&title=apples+&+pears

请注意,第二个键值对中的 url 编码 & 符号已被自动解码。其他 url 编码的保留字符不会被自动解码。

这种行为正确吗?

编辑:问题是 Request.Url 属性在我不希望它时自动解码编码的&符号。

回答: string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host, Sitecore.Context.Request.RawUrl)

4

2 回答 2

2

保留字符 URL 使用一些特殊字符来定义它们的语法。当这些字符在 URL 中没有以它们的特殊角色使用时,它们需要被编码。

 
 美元(“$”)
 与号(“&”)
 加号(“+”)
 逗号 (",")
 正斜杠(“/”)
 冒号 (”:”)
 分号 (";")
 等于 ("=")
 问号(“?”)
 “在”符号(“@”)

不安全字符

由于各种原因,某些字符可能会在 URL 中被误解。这些字符也应始终进行编码。

百分比字符(“%”)

“磅”字符(“#”)

小于号 ("<") 大于号 (">") 空格

所以 URL 编码的行为是正确的..

于 2010-10-21T11:19:23.020 回答
2

Url的属性Request在一个名为 的内部方法中被解码 CollapsePercentUFromStringInternal

您可以在反射器中看到这一点。无论如何,我认为这是默认行为。

更新

您可以使用 RawUrl 属性来获取未解码的 URL。

于 2010-10-21T11:28:07.973 回答