Are the any functions in C# that handle escape/unescape like JavaScript?
I have a JSON string like this:
{\"Feeds\":[{\"Url\":\"www.test.com\",\"FeedTy
HttpUtility.UrlDecode should do the trick.
To unescape without having to reference System.Web in order to use HttpUtility, try this:
Str = Str.Replace("+", " ");
Str = Regex.Replace(Str, "%([A-Fa-f\\d]{2})", a => "" + Convert.ToChar(Convert.ToInt32(a.Groups[1].Value, 16)));
Also, when I tried HttpUtility.UrlDecode, it didn't work for special characters áéíóúñ.
internal static string UnJavascriptEscape(string s)
{
// undo the effects of JavaScript's escape function
return HttpUtility.UrlDecode(s.Replace("+", "%2b"), Encoding.Default);
}
escape()
is equivalent to
HttpUtility.UrlDecode(str, System.Text.Encoding.Default);
By default the UrlDecode
uses UTF8 while escape()
don't.
This is the best way I found to work with these:
Encode in C#:
System.Uri.EscapeDataString("<string>");
Decode in JavaScript:
decodeURI("<string>");
Encode in JavaScript:
encodeURI("<string>");
Decode in C#:
System.Uri.UnescapeDataString("<string>");
Update 27-Jan-2016: Just found what seems do be a more compatible way to do it, which also encodes the URI protocol (http://) using javascript:
Encode in JavaScript:
encodeURIComponent("<string>");
Decode in JavaScript:
decodeURIComponent("<string>");
Aw man, why do we over-think stuff so much sometimes. When an API function is being silly, send a karma cuss at the library developer, then work-around it...
HttpUtility.UrlEncode(editext, System.Text.Encoding.Default).Replace("+","%20");