Come decodificare un parametro URL usando C #?


146

Come posso decodificare un parametro URL codificato usando C #?

Ad esempio, prendi questo URL:

my.aspx?val=%2Fxyz2F

Risposte:


107
Server.UrlDecode(xxxxxxxx)

1
quale spazio dei nomi?
polina-c,

1
@PolinaC System.Web.HttpServerUtilityBase, ma questo dovrebbe già essere importato in ASP.NET MVC.
Filnor,

288
string decodedUrl = Uri.UnescapeDataString(url)

o

string decodedUrl = HttpUtility.UrlDecode(url)

L'URL non viene completamente decodificato con una chiamata. Per decodificare completamente è possibile chiamare uno di questi metodi in un ciclo:

private static string DecodeUrlString(string url) {
    string newUrl;
    while ((newUrl = Uri.UnescapeDataString(url)) != url)
        url = newUrl;
    return newUrl;
}

13
Uri.UnescapeDataString (url) thanx
themhz

@ogi Grazie per quello! Non sapevo che non funzionasse completamente con una sola chiamata! Ho corso Uri.UnescapeDataStringdue volte e ho ottenuto quello che volevo !! : D
C0NFUS3D

2
IMHO è meglio dell'accusa risposta perché il tuo primo suggerimento funziona anche in Portable Class Libaries (PCLs)
Daniel Veihelmann,

2
migliore risposta! ma considera come i tuoi parametri sono nidificati prima di decodificare completamente. ad esempio un valore param potrebbe essere un URL codificato che a sua volta ha un parametro con un altro URL codificato, se lo decodifichi completamente in una volta sola, non sarai più in grado di dire cosa fosse. sarebbe come strappare tutte le parentesi da una dichiarazione di algebra. a = ((b + c) * d) se lo si annulla completamente, il significato dei componenti può essere perso a = b + c * d
DanO

2
UnescapeDataString non è sufficiente in quanto non gestirà diversi casi (ad esempio i parametri in un URL che contengono uno spazio usano '+' ma UnescapeDataString non li converte intenzionalmente in spazi). Uri gestisce più di un semplice URL, poiché la domanda è sull'URL dovremmo usare HttpUtility.UrlDecode
Lorenz03Tx


23

Prova questo:

string decodedUrl = HttpUtility.UrlDecode("my.aspx?val=%2Fxyz2F");

21

Provare:

var myUrl = "my.aspx?val=%2Fxyz2F";
var decodeUrl = System.Uri.UnescapeDataString(myUrl);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.