WebUtility.HtmlDecode thay thế trong .NET Core


91

Tôi cần giải mã các ký tự HTML trong .NET Core (MVC6). Có vẻ như .NET Core không có chức năng WebUtility.HtmlDecode mà mọi người đã sử dụng cho mục đích đó trước đây. Có sự thay thế tồn tại trong .NET Core không?



2
@duDE, anh ấy đang hỏi .NET Core chứ không phải .NET 4.

Hãy xem câu trả lời của tôi. nó là sự thay thế của webutility.htmldecode trong lõi .net dưới dạng httputility.HtmlDecode.

Câu trả lời:


115

Đây là trong lớp System.Net.WebUtility (Kể từ .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);
}


8
Đối với .NET 1.1 Lõi sử dụng nuget.org/packages/Microsoft.AspNetCore.WebUtilities
wolfyuk

4
Đối với .NET Core 2.1, hãy xem phản hồi của Gerardo bên dưới, không cần cài đặt gói nuget khác.
Vlad Iliescu

33

Đây là trong Net Core 2.0

using System.Text.Encodings.Web;

và gọi nó là:

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

CẬP NHẬT : Cũng trong .Net Core 2.1:

using System.Web;

HttpUtility.UrlEncode(code)
HttpUtility.UrlDecode(code)

Ngoài ra còn có các phương thức HttpUtility.HtmlEncode và HttpUtility.HtmlDecode.
xhafan

16

Tôi thấy hàm HtmlDecode trong thư viện WebUtility hoạt động.

System.Net.WebUtility.HtmlDecode(string)

3

Bạn cần thêm tài liệu tham khảo System.Net.WebUtility.

  • Nó đã được bao gồm trong .Net Core 2 ( Microsoft.AspNetCore.All)

  • Hoặc bạn có thể cài đặt từ NuGet - phiên bản xem trước cho .Net Core 1.

Vì vậy, ví dụ, mã của bạn sẽ giống như bên dưới

public static string HtmlDecode(this string value)
{
     value = System.Net.WebUtility.HtmlDecode(value);
     return value;
}

3
Hoặc chỉ cần gọi WebUtility.HtmlDecode, không có lý do gì để bọc nó trong một phương thức mở rộng ...
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);
    }
}

Bạn có thể sử dụng HttpUtility lớp học trong.net core để giải mã hoặc mã hóa.

hy vọng nó sẽ hoạt động.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.