WebUtility.HtmlDecode แทนใน. NET Core


93

ฉันต้องการถอดรหัสอักขระ HTML ใน. NET Core (MVC6) ดูเหมือนว่า. NET Core จะไม่มีฟังก์ชัน WebUtility.HtmlDecode ที่ทุกคนเคยใช้มาก่อน NET Core มีการแทนที่หรือไม่



2
@duDE เขากำลังถาม. NET Core มากกว่า. NET 4

ลองดูคำตอบของฉัน เป็นการแทนที่ webutility.htmldecode ใน. net core เป็น httputility.HtmlDecode

คำตอบ:


119

สิ่งนี้อยู่ในคลาส 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);
}


8
สำหรับ. NET Core 1.1 ให้ใช้nuget.org/packages/Microsoft.AspNetCore.WebUtilities
wolfyuk

4
สำหรับ. NET Core 2.1 ดูการตอบสนองของ Gerardo ด้านล่างไม่จำเป็นต้องติดตั้งแพ็คเกจ nuget อื่น
Vlad Iliescu

33

สิ่งนี้อยู่ใน Net Core 2.0

using System.Text.Encodings.Web;

และเรียกมันว่า:

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

UPDATE : นอกจากนี้ใน. Net Core 2.1:

using System.Web;

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

นอกจากนี้ยังมีเมธอด HttpUtility.HtmlEncode และ HttpUtility.HtmlDecode
xhafan

17

ฉันพบว่าฟังก์ชัน HtmlDecode ในไลบรารี WebUtility ทำงานได้

System.Net.WebUtility.HtmlDecode(string)

4

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

3
หรือเรียกWebUtility.HtmlDecodeว่าไม่มีเหตุผลที่จะห่อด้วยวิธีการขยาย ...
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);
    }
}

คุณสามารถใช้HttpUtility คลาสใน.net coreการถอดรหัสหรือการเข้ารหัส

หวังว่ามันจะได้ผล


2

HtmlDecodeและวิธีการส่วนใหญ่*Decodeไม่ได้ถูกย้ายไปยัง CoreFx มีเฉพาะ*Encodeวิธีการเท่านั้น

นี่คือสิ่งที่พร้อมให้บริการในวันนี้: https://github.com/dotnet/corefx/blob/1dfe38aeb2811fbbd6d4de36d210f060e80d50a6/src/System.Text.Encodings.Web/src/System/Text/Encodings/Web/HtmlEncoder.cs

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.