【问题标题】:Using HttpUtility.UrlEncode使用 HttpUtility.UrlEncode
【发布时间】:2011-10-22 12:54:48
【问题描述】:

我正在尝试使用 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 会以这种方式运行。谢谢

【问题讨论】:

标签: .net silverlight urlencode


【解决方案1】:
  • + 是一个保留的 URL 字符,作为它的预期用途代表空格,所以翻译是合法的。
  • : 是保留字符,但在此处未按预期目的使用 (AFAIK),因此百分比编码是合适的。
  • " 既不是保留也不是未保留(即字母数字等),因此百分比编码是唯一的选择

【讨论】:

    【解决方案2】:

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

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

    顺便说一句,这些数据看起来好像在某处发生了一些 SQL 连接,请告诉我你并没有真正这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 2011-02-04
      • 2012-07-13
      • 1970-01-01
      相关资源
      最近更新 更多