46 votes

Déséchapper l'échappement de JavaScript en utilisant C#

Y a-t-il des fonctions en C# qui gèrent l'échappement/déséchappement comme JavaScript?

J'ai une chaîne JSON comme ceci:

{"Feeds":[{"Url":"www.test.com","FeedType":"Twitter"},{"Url":"www.test2.com","FeedType":"Youtube"}]}

Ce qui ressemble à ceci après escape()

%7B%22Feeds%22%3A%5B%7B%22Url%22%3A%22www.test.com%22%2C%22FeedType%22%3A%22Twitter%22%7D%2C%7B%22Url%22%3A%22www.test2.com%22%2C%22FeedType%22%3A%22Youtube%22%7D%5D%7D

Dans mon code C#, j'aimerais déséchapper cette chaîne pour qu'elle ressemble exactement à ce qu'elle était avant le escape()

Est-ce possible?

67voto

Justin Niessner Points 144953

HttpUtility.UrlDecode devrait faire l'affaire.

17voto

BrunoLM Points 26573

escape() est équivalent à

HttpUtility.UrlDecode(str, System.Text.Encoding.Default);

Par défaut, UrlDecode utilise UTF8 tandis que escape() ne le fait pas.

11voto

Vinicius Points 172

C'est la meilleure façon que j'ai trouvée pour travailler avec ceux-ci :

Encoder en C# :

System.Uri.EscapeDataString("");

Décoder en JavaScript :

decodeURI("");

Encoder en JavaScript :

encodeURI("");

Décoder en C# :

System.Uri.UnescapeDataString("");

Mise à jour 27-Jan-2016 : Je viens de trouver ce qui semble être une façon plus compatible de le faire, qui encode également le protocole URI (http://) en utilisant javascript :

Encoder en JavaScript :

encodeURIComponent("");

Décoder en JavaScript :

decodeURIComponent("");

5voto

Awerealis Points 96

Oh mec, pourquoi est-ce que nous surpensons parfois tellement les choses. Quand une fonction API se comporte de façon stupide, envoie une malédiction karma au développeur de la bibliothèque, puis contourne-le...

HttpUtility.UrlEncode(editext, System.Text.Encoding.Default).Replace("+","%20");

2voto

    internal static string UnJavascriptEscape(string s)
    {
        // annuler les effets de la fonction escape de JavaScript
        return HttpUtility.UrlDecode(s.Replace("+", "%2b"), Encoding.Default);
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X