developer tip

.NET Core에서 WebUtility.HtmlDecode 대체

copycodes 2020. 11. 1. 18:16
반응형

.NET Core에서 WebUtility.HtmlDecode 대체


.NET Core (MVC6)에서 HTML 문자를 디코딩해야합니다. .NET Core에는 이전에 모두가 그 목적으로 사용했던 WebUtility.HtmlDecode 함수가없는 것 같습니다. .NET Core에 대체가 있습니까?


이것은 System.Net.WebUtility수업에 있습니다.

//
// 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);
}

이것은 Net Core 2.0에 있습니다.

using System.Text.Encodings.Web;

그것을 호출하십시오 :

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

업데이트 : 또한 .Net Core 2.1 :

using System.Web;

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

WebUtility 라이브러리에서 HtmlDecode 함수가 작동하는 것을 발견했습니다.

System.Net.WebUtility.HtmlDecode(string)

답은 아니지만 그런 문제를 해결하는 방법이 제 힌트입니다. ReSharper를 사용하는 경우에만 유용 합니다.

.NET Core 앱에서 개발하기 시작했고 평소 클래스가있는 패키지의 이름을 몰랐던 것과 같은 많은 문제를 만났습니다. ReShareper에는이 문제를 해결할 수있는 뛰어난 기능이 있습니다.

여기에 이미지 설명 입력

자세한 내용은 NuGet 패키지 찾기, 탐색 및 설치 를 참조하십시오 . 이 기능으로 많은 시간이 절약되었습니다.

편집 : Visual Studio 2017에는 유사한 기능이 있으므로 ReSharper가 필요하지 않습니다. Visual Studio 2017은 알 수없는 유형에 대해 NuGet 패키지를 자동으로 권장 할 수 있습니다.


참조를 추가해야합니다 System.Net.WebUtility.

  • 이미 .Net Core 2 ( Microsoft.AspNetCore.All)에 포함되어 있습니다.

  • 또는 NuGet-.Net Core 1 용 미리보기 버전 에서 설치할 수 있습니다 .

예를 들어 코드는 다음과 같습니다.

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

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);
    }
}

디코딩 또는 인코딩 HttpUtility.net core위해 class in 사용할 수 있습니다 .

그것이 효과가 있기를 바랍니다.


HtmlDecode그리고 대부분의 *Decode메소드는 CoreFx로 이식되지 않았습니다. *Encode방법을 사용할 수 있습니다.

현재 사용 가능한 항목은 다음과 같습니다. https://github.com/dotnet/corefx/blob/1dfe38aeb2811fbbd6d4de36d210f060e80d50a6/src/System.Text.Encodings.Web/src/System/Text/Encodings/Web/HtmlEncoder.cs

참고 URL : https://stackoverflow.com/questions/35437491/webutility-htmldecode-replacement-in-net-core

반응형