URL 在 ASP.NET 核心中编码和解码
URL Encode and Decode in ASP.NET Core
HttpContext.Current.Server.UrlEncode
这仅适用于 .NET Framework。如何在 ASP.NET Core 中编码或解码 URI 参数?
对于 ASP.NET Core 2.0+ 只需添加 System.Net
命名空间 - WebUtility
class 作为 System.Runtime.Extensions
nuget 包的一部分提供,在 ASP.NET 核心项目中默认引用。
对于之前的版本添加Microsoft.AspNetCore.WebUtilities
nuget包。
那么 WebUtility
class 将为您提供:
public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}
可在 version 2.0.0 of the .Net Core SDK, in System.Net.WebUtility.UrlEncode
(see documentation)
不要浪费你的时间,我对这些所谓的 url 编码器有很多经验,它们都是无用的,并且有不同的怪癖。例如 WebUtility.UrlEncode 不处理“+”号。
如果要对 URL 参数进行编码,请使用 BASE58 编码。它仅使用字母 + 数字,因此您不需要 url 编码。
对于 ASP.Net Core 2.0+,如果您需要将空格编码为 %20
相对于+
;
使用:
Uri.EscapeDataString(someString);
我正在使用 重定向,而 UrlEncode 对我不起作用,因为它对整个 url 进行编码。我通过使用 UriHelper.Encode 解决了这个问题,如下所示。
// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));
只需添加另一种方法即可:
UrlEncoder.Default.Encode(url);
https://docs.microsoft.com/en-us/dotnet/api/system.text.encodings.web.urlencoder?view=net-6.0
HttpContext.Current.Server.UrlEncode
这仅适用于 .NET Framework。如何在 ASP.NET Core 中编码或解码 URI 参数?
对于 ASP.NET Core 2.0+ 只需添加
System.Net
命名空间 -WebUtility
class 作为System.Runtime.Extensions
nuget 包的一部分提供,在 ASP.NET 核心项目中默认引用。对于之前的版本添加
Microsoft.AspNetCore.WebUtilities
nuget包。
那么 WebUtility
class 将为您提供:
public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}
可在 version 2.0.0 of the .Net Core SDK, in System.Net.WebUtility.UrlEncode
(see documentation)
不要浪费你的时间,我对这些所谓的 url 编码器有很多经验,它们都是无用的,并且有不同的怪癖。例如 WebUtility.UrlEncode 不处理“+”号。
如果要对 URL 参数进行编码,请使用 BASE58 编码。它仅使用字母 + 数字,因此您不需要 url 编码。
对于 ASP.Net Core 2.0+,如果您需要将空格编码为 %20
相对于+
;
使用:
Uri.EscapeDataString(someString);
我正在使用 重定向,而 UrlEncode 对我不起作用,因为它对整个 url 进行编码。我通过使用 UriHelper.Encode 解决了这个问题,如下所示。
// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));
只需添加另一种方法即可:
UrlEncoder.Default.Encode(url);
https://docs.microsoft.com/en-us/dotnet/api/system.text.encodings.web.urlencoder?view=net-6.0