.NET Core (MVC6)에서 HTML 문자를 디코딩해야합니다. .NET Core에는 이전에 모두가 그 목적으로 사용했던 WebUtility.HtmlDecode 함수가없는 것 같습니다. .NET Core에 대체가 있습니까?
답변
이것은 System.Net.WebUtility 클래스 (.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);
}
답변
이것은 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)
답변
참조를 추가해야합니다 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