【问题标题】:Querystring not working, ampersands converted to %20查询字符串不起作用,& 符号转换为 %20
【发布时间】:2012-02-10 09:08:48
【问题描述】:

当我使用这样的电子邮件中的查询字符串传递值时,我在 C# 中遇到以下问题:

http://www.website.com?firstname=Joe&lastname=Average

这些值在网站上显示如下:

http://www.website.com?firstname%3d%24Joe%24%26lastname%3d%24Average

所以基本上是对 URL 进行编码,但有些部分不应该编码。我试过&而不是&,但也没有运气。

【问题讨论】:

    标签: c# query-string urlencode


    【解决方案1】:

    任何传入/传出 URL 的值都应该是 Url Encoded/Decoded。 另一方面,在页面上显示文本 (HTML) 时,您应该使用 HtmlEncode

    你可以在命名空间System.Web中找到方法:

    • HttpUtility.UrlEncode
    • HttpUtility.UrlDecode
    • HttpUtility.UrlHtmlEncode

    等等

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      您正在编码整个查询字符串,而不仅仅是它们的。 你应该做类似的事情

      var values = new Dictionary<string, string>();
      values.Add("firstname", "Joe");
      values.Add("lastname", "Average");
      var querystring = String.Join("&", values.Select(pair => 
          pair.Key + "=" + HttpUtility.UrlEncode(pair.Value)).ToArray());
      

      【讨论】:

        猜你喜欢
        • 2015-05-09
        • 1970-01-01
        • 2023-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多