如何使用C#解码URL参数?

Tom*_*Tom 138 c# asp.net url urldecode

如何使用C#解码编码的URL参数?

例如,请使用以下URL:

my.aspx?val=%2Fxyz2F
Run Code Online (Sandbox Code Playgroud)

小智 274

string decodedUrl = Uri.UnescapeDataString(url)
Run Code Online (Sandbox Code Playgroud)

要么

string decodedUrl = HttpUtility.UrlDecode(url)
Run Code Online (Sandbox Code Playgroud)

通过一次通话,Url未完全解码.要完全解码,您可以在循环中调用其中一个方法:

private static string DecodeUrlString(string url) {
    string newUrl;
    while ((newUrl = Uri.UnescapeDataString(url)) != url)
        url = newUrl;
    return newUrl;
}
Run Code Online (Sandbox Code Playgroud)

  • Uri.UnescapeDataString(url)thanx (13认同)
  • 恕我直言,因为你的第一个建议也适用于便携式类库(PCLs) (2认同)
  • 最佳答案!但在完全解码之前请考虑您的参数是如何嵌套的。例如,一个参数值可能是一个编码的 URL,它本身有一个带有另一个编码 URL 的参数,如果你一次性完全解码它,你将无法再分辨什么是什么。这就像从代数语句中删除所有括号。a=((b+c)*d) 如果你完全转义它,组件的意义可能会丢失 a=b+c*d (2认同)
  • UnescapeDataString 是不够的,因为它不能处理几种情况(例如,包含空格的 URL 中的参数使用“+”,但 UnescapeDataString 故意不将它们转换为空格)。Uri 处理的不仅仅是 URL,因为问题是询问 URL 我们应该使用 HttpUtility.UrlDecode (2认同)

The*_*iot 102

Server.UrlDecode(xxxxxxxx)
Run Code Online (Sandbox Code Playgroud)

  • 哪个命名空间? (3认同)
  • @PolinaC `System.Web.HttpServerUtilityBase`,但它应该已经导入到 ASP.NET MVC 中。 (2认同)

Can*_*var 22

试试这个:

string decodedUrl = HttpUtility.UrlDecode("my.aspx?val=%2Fxyz2F");
Run Code Online (Sandbox Code Playgroud)


Mat*_*nda 15

尝试 __CODE__