Bagaimana cara mendekode parameter URL menggunakan C #?

146

Bagaimana saya bisa mendekode parameter URL yang disandikan menggunakan C #?

Misalnya, ambil URL ini:

my.aspx?val=%2Fxyz2F
Tom
sumber

Jawaban:

107
Server.UrlDecode(xxxxxxxx)
TheVillageIdiot
sumber
1
namespace yang mana?
polina-c
1
@ PolinaC System.Web.HttpServerUtilityBase, tapi itu sudah harus diimpor dalam ASP.NET MVC.
Filnor
288
string decodedUrl = Uri.UnescapeDataString(url)

atau

string decodedUrl = HttpUtility.UrlDecode(url)

Url tidak sepenuhnya diterjemahkan dengan satu panggilan. Untuk memecahkan kode sepenuhnya, Anda dapat memanggil salah satu metode ini dalam satu lingkaran:

private static string DecodeUrlString(string url) {
    string newUrl;
    while ((newUrl = Uri.UnescapeDataString(url)) != url)
        url = newUrl;
    return newUrl;
}
ogi
sumber
13
Uri.UnescapeDataString (url) thanx
themhz
@ogi Terima kasih untuk itu! Saya tidak tahu itu tidak sepenuhnya berfungsi hanya dengan satu panggilan! Saya berlari Uri.UnescapeDataStringdua kali dan mendapatkan apa yang saya inginkan !! : D
C0NFUS3D
2
IMHO lebih baik daripada jawaban yang diterima karena saran pertama Anda juga bekerja di Portable Class Libaries (PCLs)
Daniel Veihelmann
2
jawaban Terbaik! tetapi pertimbangkan bagaimana params Anda bersarang sebelum Anda memecahkan kode sepenuhnya. mis. nilai param bisa berupa URL yang disandikan yang dengan sendirinya memiliki param dengan URL yang disandikan lainnya, Jika Anda mendekode sepenuhnya dalam sekali jalan, Anda tidak akan dapat mengatakan apa itu lagi. itu akan seperti menarik semua paren dari pernyataan aljabar. a = ((b + c) * d) jika Anda benar-benar menghapusnya, makna komponen dapat hilang a = b + c * d
DanO
2
UnescapeDataString tidak memadai karena tidak akan menangani beberapa kasus (misalnya parameter dalam URL yang berisi spasi menggunakan '+' tetapi UnescapeDataString sengaja tidak mengonversinya menjadi spasi). Uri menangani lebih dari sekadar URL, karena pertanyaannya adalah menanyakan tentang URL, kita harus menggunakan HttpUtility.UrlDecode
Lorenz03Tx
23

Coba ini:

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

Mencoba:

var myUrl = "my.aspx?val=%2Fxyz2F";
var decodeUrl = System.Uri.UnescapeDataString(myUrl);
Matheus Miranda
sumber