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

Jawaban:



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

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");

21

Mencoba:

var myUrl = "my.aspx?val=%2Fxyz2F";
var decodeUrl = System.Uri.UnescapeDataString(myUrl);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.