2013-02-20 39 views
5

क्या सी # में HttpUtility.JavaScriptStringEncode() के साथ एन्कोड किए गए स्ट्रिंग को डीकोड करने का कोई तरीका है?जावास्क्रिप्टस्ट्रिंगएन्कोडेड के साथ एन्कोड किए गए स्ट्रिंग को डीकोड कैसे करें?

उदाहरण इनकोडिंग स्ट्रिंग:

<div class=\"header\"><h2>\u00FC<\/h2><script>\n<\/script>\n 

मेरे अस्थायी समाधान है:

public static string JavaScriptStringDecode(string source) 
{ 
    // Replace some chars. 
    var decoded = source.Replace(@"\'", "'") 
       .Replace(@"\""", @"""") 
       .Replace(@"\/", "/") 
       .Replace(@"\t", "\t") 
       .Replace(@"\n", "\n"); 

    // Replace unicode escaped text. 
    var rx = new Regex(@"\\[uU]([0-9A-F]{4})"); 

    decoded = rx.Replace(decoded, match => ((char)Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber)) 
              .ToString(CultureInfo.InvariantCulture)); 

    return decoded; 
} 

उत्तर

0

नहीं, आप लागू करने के लिए अपने आप को कि होगा। इसका कारण यह है कि ऐसी विधि के लिए कोई इरादा नहीं है! क्या आप शायद प्राप्त करने के लिए कोशिश कर रहे हैं के लिए, क्यों न सिर्फ

HttpServerUtility.HtmlEncode(...) 

और

HttpServerUtility.HtmlDecode(...) 
+0

इरादा उपयोग वेब सामग्री पार्सर है। मेरे पास सामग्री नहीं है। –

+3

कोई इरादा उपयोग नहीं है? आप मजाक कर रहे हैं ठीक? – misteraidan

0

आप इस्तेमाल कर सकते हैं का उपयोग

HttpUtility.UrlDecode 

http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode(v=vs.110).aspx

भी यहाँ उत्तर दिया: Unescape JavaScript's escape() using C#

लेकिन, UrlDecode में कुछ वर्णों के आसपास कुछ महत्वपूर्ण सीमाएं हैं (जैसे + संकेत, जो जावास्क्रिप्ट अनदेखा नहीं करता है) और किसी भी वर्ण मान> = 128. माइक्रोसॉफ्ट.जेस्क्रिप्ट.ग्लोबलऑब्जेक्ट.यून्सकेप का उपयोग करना शायद सबसे विश्वसनीय है, लेकिन मैं ' टी जानता है कि यह कितना अच्छा प्रदर्शन करता है (यानी बैकिंग भाषा क्या है। मुझे लगता है कि यह तेजी से दिया गया है यह इस बिंदु पर एक lib है)।