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

时间:2010-01-06 11:17:44

标签: asp.net asp-classic url-encoding

在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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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