2013-02-20 21 views
5

C# ile HttpUtility.JavaScriptStringEncode() ile kodlanmış bir dizginin kodunu çözme yöntemi var mı?JavaScriptStringEncoded ile kodlanmış bir dize nasıl çözülür?

Örnek kodlanmış dize:

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

Benim geçici bir çözümdür:

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

cevap

0

Hayır, bunu kendin uygulamak zorunda kalacak. Bunun nedeni, böyle bir yöntem için amaçlanmış bir kullanım olmamasıdır! muhtemelen ulaşmak için ne çalışıyorsunuz, neden sadece

HttpServerUtility.HtmlEncode(...) 

ve

HttpServerUtility.HtmlDecode(...) 
+0

Kullanım amacı web içeriği ayrıştırıcısıdır. İçeriğin sahibi ben değilim. –

+3

Kullanım amacı yok mu? Şaka yapıyorsun değil mi? – misteraidan

0

Şunları kullanabilirsiniz kullanmak

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

HttpUtility.UrlDecode 
burada da cevap verdi: Unescape JavaScript's escape() using C#

Ancak, UrlDecode bazı karakterler (javascript unescape değil, + işaretler gibi) ve herhangi bir karakter değeri> = 128 bazı önemli sınırlamaları vardır. Microsoft.JScript.GlobalObject.unescape kullanma, muhtemelen en güvenilir, ama ben ' ne kadar iyi performans gösterdiğini bilirsiniz (örn. destek dili nedir? Bu noktada bir lib olduğu göz önüne alındığında hızlı olduğunu hayal ediyorum).

İlgili konular