如何模仿ASP Server.URLEn code在ASP.NET?
问题描述:
在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的行为?
Is there any elegant way how to mimic old ASP behavior in ASP.NET?
答
您可以使用常规的前pression以匹配要转换的字符,一个lambda前pression创建六角code:
You can use a regular expression to match the characters that you want to convert, and a lambda expression for creating the hex code:
string input = @"+&(). -*<>/\|";
string encoded = Regex.Replace(
HttpUtility.UrlEncode(input),
@"[()\.\-*]",
m => "%" + Convert.ToString((int)m.Captures[0].Value[0], 16)
);