2013-02-20 35 views
5

有沒有解碼用C#中的HttpUtility.JavaScriptStringEncode()編碼的字符串的方法?如何解碼用JavaScriptStringEncoded編碼的字符串?

上述編碼字符串:

<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

預期用途是web內容解析器。我不擁有這些內容。 – 2013-02-20 15:42:57

+3

沒有預期的用途?你在開玩笑吧? – misteraidan 2013-07-30 05:56:31

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對某些字符(如+符號,javascript不會忽略)和任何字符值> = 128有一些重要的限制。使用Microsoft.JScript.GlobalObject.unescape可能是最可靠的,但是我不' t知道它的表現如何(即支持語言是什麼。我想這是快速的,因爲這是一個lib)。