web-dev-qa-db-ja.com

ASP.NET CoreでのURLエンコードとデコード

HttpContext.Current.Server.UrlEncode

.NET Frameworkでしか動作しません。 ASP.NET CoreプロジェクトでURI引数をエンコードまたはデコードする方法を教えてください。

73
wtf512
  • ASP.NET Core 2.0以降の場合はSystem.Net名前空間を追加するだけです - WebUtilityクラスはSystem.Runtime.Extensions nugetパッケージの一部として出荷され、ASP.NET Coreプロジェクトではデフォルトで参照されます。

  • 以前のバージョンではMicrosoft.AspNetCore.WebUtilities nugetパッケージを追加してください。

そうするとWebUtilityクラスが利用可能になります。

public static class WebUtility
{
    public static string UrlDecode(string encodedValue);
    public static string UrlEncode(string value);
}
122
Set

System.Net.WebUtility.UrlEncode.Net Core SDKのバージョン2.0. にあります( ドキュメンテーションを参照

69
Manuel Alves

ASP.Net Core 2.0以降で、スペースを%20としてエンコードする必要がある場合

+とは対照的に。

つかいます:

 Uri.EscapeDataString(someString);
24
ttugates

あなたの時間を無駄にしないでください、私はこれらのいわゆるURLエンコーダに関するたくさんの経験を持っています、それらはすべて役に立たず、そして異なった癖があります。例えばWebUtility.UrlEncodeは "+"記号を処理しません。

URLパラメータをエンコードしたい場合は、BASE58エンコードを使用してください。アルファベット+数字のみを使用しているので、URLエンコードする必要はありません。

2

私はredirectを使用していますが、URL全体をエンコードするため、UrlEncodeは機能しませんでした。以下に示すように、代わりにUriHelper.Encodeを使用してこれを解決しました。

riHelper.Encode

// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));
0
Jordan