2

在 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 行为?

4

2 回答 2

3

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

string input = @"+&(). -*<>/\|";
string encoded = Regex.Replace(
  HttpUtility.UrlEncode(input),
  @"[()\.\-*]",
  m => "%" + Convert.ToString((int)m.Captures[0].Value[0], 16)
);
于 2010-01-06T11:43:51.247 回答
0

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

于 2010-01-06T11:35:51.140 回答