2011-01-05 80 views
2

使用HttpUtility.UrlEncode并通过接收页面看到变量作为URL传递:UrlEncoding - 我应该使用哪种编码?

全新 - >品牌+新
Airconaire +有限公司 - > Airconaire +公司

你能看到第一个和第二个两个都有一个+他们在哪里他们没有在开始?我假设这是与编码(特别是RFC3986或RFC2396)有关,但我该如何解决这个问题?

我认为理想情况下空间应该转换为%20,但这是最好的方式吗?

+0

如果你说UrlPathEncode()不为你工作,你能不能发布您的代码? – 2011-01-06 19:23:16

回答

2

尝试使用HttpUtility.UrlPathEncode而不是URLEncode。

+0

谢谢 - 但UrlPathEncode通过UrlEncode工作的原因是什么? – 2011-01-05 15:53:27

+0

UrlPathEncode使用平台不可知编码方法,而UrlEncode使用微软方法(我相信)。 – Lazarus 2011-01-05 15:55:03

+0

所以我应该通过我的应用程序将UrlEncode的每个实例都替换为UrlPathEncode? – 2011-01-05 15:56:04

1

UrlEncode()方法可用于编码整个URL,包括查询字符串值。如果在HTTP流中传递空格和标点符号等字符,可能会在接收端误解。 URL编码将URL中不允许的字符转换为与字符实体等同的字符;网址解码反转编码。例如,当字符<和>嵌入到要在URL中传输的文本块中时,它们被编码为%3c和%3e。

您可以使用UrlEncode()方法或UrlPathEncode()方法对URL进行编码。但是,这些方法返回不同的结果。 UrlEncode()方法将每个空格字符转换为加号(+)。 UrlPathEncode()方法将每个空格字符转换为字符串“%20”,它以十六进制表示法表示一个空格。在对URL的路径部分进行编码时使用UrlPathEncode()方法,以保证解码的URL一致,而不管哪个平台或浏览器执行解码。

http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx