.net 使用HttpUtility.UrlEncode

.net 使用HttpUtility.UrlEncode,.net,silverlight,urlencode,.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”。

我正在尝试使用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会以这种方式工作的话。谢谢

  • +
    是一个保留的URL字符,其目的是表示空格,因此翻译是合法的
  • 是一个保留字符,但此处没有按预期用途使用(AFAIK),因此百分比编码是合适的
  • 既不是保留的也不是非保留的(即字母数字等),因此百分比编码是唯一的选项

我不知道你为什么觉得需要一个解决办法。确实,在合法的情况下使用+来表示空间,过去有些服务器处理得很差

您可以考虑<代码> URI .EdvestAdStase作为替代,它仍然编码:%3A(对于HEX值也使用大写),但是它编码空间一% 20。


顺便说一句,这些数据看起来好像在某个地方发生了一些SQL关联,请告诉我您并没有这样做。

HttpUtility.UrlEncode
正在按预期运行。请参阅。