UrlEncoding - 我应该使用哪种编码?

时间:2011-01-05 15:41:31

标签: c# asp.net encoding character-encoding urlencode

使用HttpUtility.UrlEncode并通过URL传递接收页面将变量视为:

  

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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