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

标签 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 行为?

最佳答案

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

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

关于asp.net - 如何在 ASP.NET 中模拟 ASP Server.URLEncode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012483/

相关文章:

javascript - 如何在asp.net中的onclick事件时添加属性

C# WCF 的行为类似于单个用户实例

html - 右边需要menuitem

asp.net - 寻找经典 ASP 2.0 资源(来自 .NET)的方向

javascript - 在 Javascript 中获取 URL 参数不适用于 urlencoded '&'

c# - 如何使用多个分割符值分割字符串

asp-classic - 关闭常规 ASP 中的 SQL 连接

asp-classic - <% %> 和 &lt;script language ="vbscript"runat ="server"> 在经典asp中有什么区别?

java - 如何找出字符串是否已经被 URL 编码?

c# - 完全C# noob,VS2010,不能使用HttpServerUtility.UrlEncode?