Penggantian WebUtility.HtmlDecode di .NET Core

91

Saya perlu memecahkan kode karakter HTML di .NET Core (MVC6). Sepertinya .NET Core tidak memiliki fungsi WebUtility.HtmlDecode yang digunakan semua orang untuk tujuan itu sebelumnya. Apakah ada pengganti di .NET Core?

sibvic
sumber
2
@duDE, dia meminta .NET Core daripada .NET 4.
Lihatlah jawaban saya. itu adalah penggantian webutility.htmldecode di .net core sebagai httputility.HtmlDecode.

Jawaban:

115

Ini ada di kelas System.Net.WebUtility (Sejak .NET Standard 1.0):

//
// Summary:
//     Provides methods for encoding and decoding URLs when processing Web requests.
public static class WebUtility
{
    public static string HtmlDecode(string value);
    public static string HtmlEncode(string value);
    public static string UrlDecode(string encodedValue);
    public static byte[] UrlDecodeToBytes(byte[] encodedValue, int offset, int count);
    public static string UrlEncode(string value);
    public static byte[] UrlEncodeToBytes(byte[] value, int offset, int count);
}
Scott Dorman
sumber
8
Untuk .NET Core 1.1 gunakan nuget.org/packages/Microsoft.AspNetCore.WebUtilities
wolfyuk
4
Untuk .NET Core 2.1 lihat respon Gerardo di bawah ini, tidak perlu menginstal paket nuget lain.
Vlad Iliescu
33

Ini ada di Net Core 2.0

using System.Text.Encodings.Web;

dan menyebutnya:

$"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(link)}'>clicking here</a>.");

UPDATE : Juga di .Net Core 2.1:

using System.Web;

HttpUtility.UrlEncode(code)
HttpUtility.UrlDecode(code)
Gerardo Buenrostro González
sumber
Ada juga metode HttpUtility.HtmlEncode dan HttpUtility.HtmlDecode.
xhafan
16

Saya telah menemukan fungsi HtmlDecode di perpustakaan WebUtility untuk bekerja.

System.Net.WebUtility.HtmlDecode(string)
perpipaan
sumber
3

Anda perlu menambahkan referensi System.Net.WebUtility.

  • Ini sudah termasuk dalam .Net Core 2 ( Microsoft.AspNetCore.All)

  • Atau Anda dapat menginstal dari NuGet - versi pratinjau untuk .Net Core 1.

Jadi contoh kode Anda akan terlihat seperti di bawah ini

public static string HtmlDecode(this string value)
{
     value = System.Net.WebUtility.HtmlDecode(value);
     return value;
}
Nguyễn Top
sumber
3
Atau panggil saja WebUtility.HtmlDecodetidak ada alasan untuk membungkusnya dalam metode perpanjangan ...
Jamie Rees
3
namespace System.Web
{
    //
    // Summary:
    //     Provides methods for encoding and decoding URLs when processing Web requests.
    //     This class cannot be inherited.
    public sealed class HttpUtility
    {
        public HttpUtility();
        public static string HtmlAttributeEncode(string s);
        public static void HtmlAttributeEncode(string s, TextWriter output); 
        public static string HtmlDecode(string s);
        public static void HtmlDecode(string s, TextWriter output);
        public static string HtmlEncode(string s);
        public static string HtmlEncode(object value);
        public static void HtmlEncode(string s, TextWriter output);
        public static string JavaScriptStringEncode(string value);
        public static string JavaScriptStringEncode(string value, bool addDoubleQuotes);
        public static NameValueCollection ParseQueryString(string query);
        public static NameValueCollection ParseQueryString(string query, Encoding encoding);
        public static string UrlDecode(string str, Encoding e);
        public static string UrlDecode(byte[] bytes, int offset, int count, Encoding e);
        public static string UrlDecode(string str);
        public static string UrlDecode(byte[] bytes, Encoding e);
        public static byte[] UrlDecodeToBytes(byte[] bytes, int offset, int count);
        public static byte[] UrlDecodeToBytes(string str, Encoding e);
        public static byte[] UrlDecodeToBytes(byte[] bytes);
        public static byte[] UrlDecodeToBytes(string str);
        public static string UrlEncode(string str);
        public static string UrlEncode(string str, Encoding e);
        public static string UrlEncode(byte[] bytes);
        public static string UrlEncode(byte[] bytes, int offset, int count);
        public static byte[] UrlEncodeToBytes(string str);
        public static byte[] UrlEncodeToBytes(byte[] bytes);
        public static byte[] UrlEncodeToBytes(string str, Encoding e);
        public static byte[] UrlEncodeToBytes(byte[] bytes, int offset, int count);
        [Obsolete("This method produces non-standards-compliant output and has interoperability issues. The preferred alternative is UrlEncode(String).")]
        public static string UrlEncodeUnicode(string str);
        [Obsolete("This method produces non-standards-compliant output and has interoperability issues. The preferred alternative is UrlEncodeToBytes(String).")]
        public static byte[] UrlEncodeUnicodeToBytes(string str);
        public static string UrlPathEncode(string str);
    }
}

Anda dapat menggunakan HttpUtility class in .net coreuntuk decoding atau encoding.

semoga berhasil.


sumber