WebUtility.HtmlDecode replacement in .NET Core

后端 未结 6 541
故里飘歌
故里飘歌 2020-12-09 00:39

I need to decode HTML characters in .NET Core (MVC6). It looks like .NET Core doesn\'t have WebUtility.HtmlDecode function which everybody used for that purpose before. Is t

相关标签:
6条回答
  • 2020-12-09 01:03

    This is in the System.Net.WebUtility class (Since .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);
    }
    
    0 讨论(0)
  • 2020-12-09 01:04

    This is in Net Core 2.0

    using System.Text.Encodings.Web;
    

    and call it:

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

    UPDATE: Also in .Net Core 2.1:

    using System.Web;
    
    HttpUtility.UrlEncode(code)
    HttpUtility.UrlDecode(code)
    
    0 讨论(0)
  • 2020-12-09 01:07
    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);
        }
    }
    

    You can use HttpUtility class in .net core for decoding or encoding.

    hope it will work.

    0 讨论(0)
  • 2020-12-09 01:08

    HtmlDecode and most of the *Decode methods were not ported to CoreFx. Only the *Encode methods are available.

    Here's what's available today: https://github.com/dotnet/corefx/blob/1dfe38aeb2811fbbd6d4de36d210f060e80d50a6/src/System.Text.Encodings.Web/src/System/Text/Encodings/Web/HtmlEncoder.cs

    0 讨论(0)
  • 2020-12-09 01:21

    I've found the HtmlDecode function in the WebUtility library to work.

    System.Net.WebUtility.HtmlDecode(string)
    
    0 讨论(0)
  • 2020-12-09 01:21

    You need add reference System.Net.WebUtility.

    • It's already included in .Net Core 2 (Microsoft.AspNetCore.All)

    • Or you can install from NuGet - preview version for .Net Core 1.

    So example, your code will be look like the below

    public static string HtmlDecode(this string value)
    {
         value = System.Net.WebUtility.HtmlDecode(value);
         return value;
    }
    
    0 讨论(0)
提交回复
热议问题