代码之家  ›  专栏  ›  技术社区  ›  Jakub Å turc

如何在ASP.NET中模拟ASP Server.URLEncode?

  •  2
  • Jakub Å turc  · 技术社区  · 16 年前

    在ASP中 :

    Server.URLEncode("+&(). -*<>/\|")
    ' returns %2B%26%28%29%2E+%2D%2A%3C%3E%2F%5C%7C
    

    在ASP.NET中

    Uri.EscapeDataString("+&(). -*<>/\|")
    // returns %2B%26().%20-*%3C%3E%2F%5C%7C
    
    HttpUtility.UrlEncode("+&(). -*<>/\|") 
    // returns %2b%26().+-*%3c%3e%2f%5c%7c
    

    如何在ASP.NET中模仿旧的ASP行为,有什么优雅的方法吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   Guffa    16 年前

    可以使用正则表达式匹配要转换的字符,使用lambda表达式创建十六进制代码:

    string input = @"+&(). -*<>/\|";
    string encoded = Regex.Replace(
      HttpUtility.UrlEncode(input),
      @"[()\.\-*]",
      m => "%" + Convert.ToString((int)m.Captures[0].Value[0], 16)
    );
    
        2
  •  0
  •   Ravi Vanapalli    16 年前

    您可以尝试使用ASP.Net中支持的Server.UrlEncode()。