使用HttpUtility.UrlEncode并通过URL传递,接收页面将变量视为:
全新-> brand+new
Airconaire+Ltd -> Airconaire+Ltd
你能看到第一个和第二个--都是--在它们开始时没有的地方,它们中有一个+吗?我假设这与编码有关(特别是RFC3986或RFC2396),但是如何解决这个问题呢?
我认为理想情况下,空格应该转换为%20,但这是最好的前进方式吗?
发布于 2011-01-05 15:46:44
尝试使用HttpUtility.UrlPathEncode而不是URLEncode。
发布于 2011-01-05 15:54:06
UrlEncode()方法可用于对整个URL进行编码,包括查询字符串值。如果在HTTP流中传递空白和标点符号等字符,它们可能会在接收端被误解。URL编码将URL中不允许的字符转换为字符实体等效项;URL解码将反转编码。例如,当字符<和>嵌入到要在URL中传输的文本块中时,它们被编码为%3c和%3e。
您可以使用UrlEncode()方法或UrlPathEncode()方法对URL进行编码。然而,这些方法返回不同的结果。UrlEncode()方法将每个空格字符转换为加号字符(+)。UrlPathEncode()方法将每个空格字符转换为字符串"%20",该字符串以十六进制表示法表示空格。在对URL的路径部分进行编码时,请使用UrlPathEncode()方法,以确保解码后的URL一致,而不管哪个平台或浏览器执行解码。
http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx
https://stackoverflow.com/questions/4605942
复制相似问题