C # kullanarak bir URL parametresinin kodunu nasıl çözerim?


150

C # kullanarak kodlanmış bir URL parametresinin kodunu nasıl çözebilirim?

Örneğin, şu URL'yi alın:

my.aspx?val=%2Fxyz2F

Yanıtlar:



298
string decodedUrl = Uri.UnescapeDataString(url)

veya

string decodedUrl = HttpUtility.UrlDecode(url)

URL, tek bir aramayla tam olarak çözülmedi. Tamamen kodunu çözmek için bu yöntemlerden birini bir döngüde çağırabilirsiniz:

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 Bunun için teşekkürler! Tek bir aramayla tam olarak çalışmadığını bilmiyordum! Uri.UnescapeDataStringİki kez koştum ve istediğimi aldım !! : D
C0NFUS3D

2
IMHO, kabul edilen cevaptan daha iyi çünkü ilk öneriniz Portable Class Libaries (PCLs) için de işe yarıyor
Daniel Veihelmann

2
en iyi cevap! ancak kodu tam olarak çözmeden önce parametrelerinizin nasıl iç içe geçtiğini düşünün. Örneğin, bir param değeri, kendisi başka bir kodlanmış URL ile bir parametresi olan kodlanmış bir URL olabilir. Bir seferde kodunu tamamen çözerseniz, artık ne olduğunu söyleyemezsiniz. bir cebir ifadesinden tüm parensleri çekmek gibi olurdu. a = ((b + c) * d) eğer tamamen çıkarırsanız, bileşenlerin anlamı kaybolabilir a = b + c * d
DanO

2
UnescapeDataString, birkaç durumu işlemeyeceği için yeterli değildir (örneğin, bir boşluk içeren bir URL'deki parametreler '+' kullanır, ancak UnescapeDataString kasıtlı olarak bunları boşluklara dönüştürmez). Uri URL'den daha fazlasını
işliyor


23

Bunu dene:

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

21

Deneyin:

var myUrl = "my.aspx?val=%2Fxyz2F";
var decodeUrl = System.Uri.UnescapeDataString(myUrl);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.