Remplacement de WebUtility.HtmlDecode dans .NET Core

91

J'ai besoin de décoder les caractères HTML dans .NET Core (MVC6). Il semble que .NET Core ne dispose pas de la fonction WebUtility.HtmlDecode que tout le monde utilisait auparavant à cette fin. Existe-t-il un remplacement dans .NET Core?

sibvic
la source
2
@duDE, il demande .NET Core plutôt que .NET 4.
Jetez un œil à ma réponse. il remplace webutility.htmldecode dans .net core en tant que httputility.HtmlDecode.

Réponses:

115

C'est dans la classe System.Net.WebUtility (depuis .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
la source
8
Pour .NET Core 1.1, utilisez nuget.org/packages/Microsoft.AspNetCore.WebUtilities
wolfyuk
4
Pour .NET Core 2.1, voir la réponse de Gerardo ci-dessous, pas besoin d'installer un autre package nuget.
Vlad Iliescu
33

C'est dans Net Core 2.0

using System.Text.Encodings.Web;

et appelez-le:

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

MISE À JOUR : également dans .Net Core 2.1:

using System.Web;

HttpUtility.UrlEncode(code)
HttpUtility.UrlDecode(code)
Gerardo Buenrostro González
la source
Il existe également des méthodes HttpUtility.HtmlEncode et HttpUtility.HtmlDecode.
xhafan
16

J'ai trouvé la fonction HtmlDecode dans la bibliothèque WebUtility pour fonctionner.

System.Net.WebUtility.HtmlDecode(string)
tuyauterie
la source
3

Vous devez ajouter une référence System.Net.WebUtility.

  • Il est déjà inclus dans .Net Core 2 ( Microsoft.AspNetCore.All)

  • Ou vous pouvez installer à partir de NuGet - version préliminaire pour .Net Core 1.

Ainsi, par exemple, votre code ressemblera à celui ci-dessous

public static string HtmlDecode(this string value)
{
     value = System.Net.WebUtility.HtmlDecode(value);
     return value;
}
Haut Nguyễn
la source
3
Ou appelez simplement, WebUtility.HtmlDecodeil n'y a aucune raison de l'envelopper dans une méthode d'extension ...
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);
    }
}

Vous pouvez utiliser la HttpUtility classe .net corepour le décodage ou l'encodage.

espérons que cela fonctionnera.


la source