मैं C # में HTML वर्णों को कैसे डीकोड कर सकता हूं?


397

मेरे पास HTML वर्ण संस्थाओं के साथ ईमेल पते हैं। क्या .NET में ऐसा कुछ है जो उन्हें सादे तार में बदल सकता है?

जवाबों:


618

आप उपयोग कर सकते हैं HttpUtility.HtmlDecode

यदि आप .NET 4.0+ का उपयोग कर रहे हैं, तो आप वह भी उपयोग कर सकते हैं WebUtility.HtmlDecodeजिसे अतिरिक्त असेंबली संदर्भ की आवश्यकता नहीं है क्योंकि यह System.Netनामस्थान में उपलब्ध है ।


1
यह System.Web में होना चाहिए था, लेकिन यह नहीं है। मैंने एक वर्ष से अधिक समय तक C # को नहीं छुआ है, अगर मुझे इससे थोड़ा अधिक निराशा होती है तो मैं उन्हें मैन्युअल रूप से परिवर्तित कर दूंगा।
वासिल

1
यह .NET 2.0 संस्करण में System.Web
मार्क सिडेड

1
मेरे पास System.Web का उपयोग है। मेरे संदर्भ में नामस्थान में केवल कुछ AspPermission classes हैं।
वासिल

17
अपने प्रोजेक्ट गुणों में System.Web.Dll का संदर्भ जोड़ें। आप जिन कक्षाओं को System.dll में लाइव देखते हैं उन्हें डिफ़ॉल्ट रूप से संदर्भित किया जाता है।
उल्लू

11
यदि आप क्वेरी स्ट्रिंग को डिकोड करने का प्रयास कर रहे हैं, तो आपको उपयोग करने की आवश्यकता हैHttpUtility.UrlDecode
पीटरएक्स

189

.Net पर 4.0:

System.Net.WebUtility.HtmlDecode()

सी # प्रोजेक्ट के लिए असेंबली को शामिल करने की आवश्यकता नहीं है


6
यह बेहतर समाधान है क्योंकि HttpUtility डिकोड नहीं करता है "& apos;" प्रतीक .. मुझे नहीं पता कि क्यों ..
RredCat

यूनिवर्सल विंडोज प्लेटफॉर्म के लिए इसे विकसित करने की आवश्यकता है।
मैथ्यूशेट्स

क्या यह .net वेब पेजों में XSS का कारण होगा?
सेनुरा डिसनायके

43

जैसा कि @CQ कहता है, आपको HttpUtility.HtmlDecode का उपयोग करने की आवश्यकता है , लेकिन यह डिफ़ॉल्ट रूप से गैर-ASP .NET प्रोजेक्ट में उपलब्ध नहीं है।

गैर-ASP .NET अनुप्रयोग के लिए, आपको एक संदर्भ जोड़ना होगा System.Web.dll। समाधान एक्सप्लोरर में अपनी परियोजना पर राइट-क्लिक करें, "संदर्भ जोड़ें" चुनें, फिर के लिए सूची ब्राउज़ करेंSystem.Web.dll

अब जब संदर्भ जोड़ा जाता है, तो आपको पूरी तरह से योग्य नाम का उपयोग करके विधि को एक्सेस करने में सक्षम होना चाहिए System.Web.HttpUtility.HtmlDecodeया चीजों को आसान बनाने के usingलिए एक बयान सम्मिलित System.Webकरना चाहिए।


16

यदि कोई सर्वर संदर्भ नहीं है (यानी आपका ऑफ़लाइन चलना), तो आप HttpUtility का उपयोग कर सकते हैं । HtmlDubble


1
सहमत, यही कारण है कि मैं HttpUtility का उपयोग करता हूं, एक ही जाल में गिर गया = पी
क्विंटिन रॉबिन्सन

7

Server.HtmlDecodeHTML संस्थाओं को डीकोड करने के लिए उपयोग करें । यदि आप HTML से बचना चाहते हैं , तो उपयोगकर्ता को चरित्र <और >चरित्र प्रदर्शित करें, उपयोग करें Server.HtmlEncode


4
एक सर्वर संदर्भ नहीं हो सकता है (यानी जब परीक्षण मामलों और इस तरह से चल रहा है) मैं इससे पहले इस जाल में गिर गया :)
रोब कूपर

7

HTML को डिकोड करने के लिए नीचे दिए गए कोड को देखें

string s = "Svendborg V&#230;rft A/S";
string a = HttpUtility.HtmlDecode(s);
Response.Write(a);

आउटपुट जैसा है

 Svendborg Værft A/S

2
HtmlDecode एक स्ट्रिंग लौटाता है क्योंकि 'ToString ()' बेमानी है
जस्टिन

6

यह भी उल्लेखनीय है कि यदि आप HtmlAgilityPack का उपयोग कर रहे हैं जैसे कि मैं था, तो आपको उपयोग करना चाहिए HtmlAgilityPack.HtmlEntity.DeEntitize()। यह एक लेता है stringऔर एक रिटर्न देता है string


1

स्टैटिक को कुछ यूटिलिटी क्लास में विधि लिखें, जो स्ट्रिंग को पैरामीटर के रूप में स्वीकार करते हैं और डिकोड किए गए html स्ट्रिंग को वापस करते हैं।

using System.Web.HttpUtilityअपनी कक्षा में शामिल करें

public static string HtmlEncode(string text)
    {
        if(text.length > 0){

           return HttpUtility.HtmlDecode(text);
        }else{

         return text;
        }

    }

1

.Net के लिए 4.0

System.net.dllप्रोजेक्ट के लिए एक संदर्भ जोड़ें using System.Net;इसके बाद निम्न एक्सटेंशन का उपयोग करें

// Html encode/decode
    public static string HtmDecode(this string htmlEncodedString)
    {
        if(htmlEncodedString.Length > 0)
        {
            return System.Net.WebUtility.HtmlDecode(htmlEncodedString);
        }
        else
        {
            return htmlEncodedString;
        }
    }

    public static string HtmEncode(this string htmlDecodedString)
    {
        if(htmlDecodedString.Length > 0)
        {
            return System.Net.WebUtility.HtmlEncode(htmlDecodedString);
        }
        else
        {
            return htmlDecodedString;
        }
    }

0

& # X20 वाले स्ट्रिंग्स के लिए; मुझे स्ट्रिंग को डबल-डिकोड करना पड़ा है। पहला डिकोड इसे दूसरे पास में बदल देगा और इसे सही चरित्र में सही ढंग से डिकोड करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.