2013-02-20 36 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)。