2013-02-20 18 views
5

Esiste un metodo per decodificare una stringa codificata con HttpUtility.JavaScriptStringEncode() in C#?Come decodificare una stringa codificata con JavaScriptStringEncoded?

Esempio stringa codificata:

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

mia soluzione temporanea è:

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

risposta

0

No, si dovrebbe attuare tale te stesso. Il motivo è che non esiste un uso intuitivo per un tale metodo! Per ciò che si sta probabilmente cercando di ottenere, perché non basta usare

HttpServerUtility.HtmlEncode(...) 

e

HttpServerUtility.HtmlDecode(...) 
+0

L'utilizzo previsto è un parser di contenuto web. Non possiedo il contenuto. –

+3

Nessun utilizzo previsto? Stai scherzando vero? – misteraidan

0

si potrebbe usare

HttpUtility.UrlDecode 

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

risposto anche qui: Unescape JavaScript's escape() using C#

Tuttavia, UrlDecode presenta alcune limitazioni significative attorno a determinati caratteri (come + segni, che javascript non annulla mai) e qualsiasi valore di carattere> = 128. L'uso di Microsoft.JScript.GlobalObject.unescape è probabilmente il più affidabile, ma non lo faccio so bene come si comporta (es che cos'è il backing language. Immagino sia veloce visto che è un lib a questo punto).

Problemi correlati