使用HttpUtility.UrlEncode

时间:2011-10-22 12:54:48

标签: .net silverlight urlencode

我正在尝试使用HttpUtility.UrlEncode编码以下字符串;

1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.dbe01.tv" ORDER BY bouquet

我得到的结果是;

1%3a7%3a1%3a0%3a0%3a0%3a0%3a0%3a0%3a0%3aFROM+BOUQUET+%22userbouquet.dbe0e.tv%22+ORDER+BY+bouquet

所以它转换为:%3a,空格为+和“到%22。根据MSDN上的文档,:不应该转换。另外我不明白为什么空间被转换为加号,我认为应该是%20。

有关正在发生的事情和任何可能的解决方法的任何信息?

注意:应保持原样,空格应为%20,“应为%22

编辑:我找到了一个使用简单字符串替换函数的解决方案,但如果有人仍然可以解释为什么urlencode会以这种方式运行。感谢

2 个答案:

答案 0 :(得分:3)

  • +是一个保留的网址字符,的预期用途代表空间,因此翻译是合法的。
  • :是保留字符,但未在此处使用(AFAIK),因此百分比编码是合适的。
  • "既不是保留也不是非保留(即字母数字等),因此百分比编码是唯一的选择

答案 1 :(得分:0)

我不确定为什么你觉得你需要一个解决方法。确实,过去在某些服务器上使用+用于空间而非合法处理。

您可以考虑将Uri.EscapeDataString作为替代方案,它仍然会编码:%3A(对于十六进制值也使用大写),但它会将空格编码为%20。

顺便说一句,这些数据看起来几乎就像某个地方有一些SQL连接,请告诉我你并没有真正这样做。