Як розшифрувати параметр URL за допомогою C #?


146

Як я можу розшифрувати параметр закодованого URL за допомогою C #?

Наприклад, візьміть цю URL-адресу:

my.aspx?val=%2Fxyz2F

Відповіді:



288
string decodedUrl = Uri.UnescapeDataString(url)

або

string decodedUrl = HttpUtility.UrlDecode(url)

URL не повністю розшифровується одним викликом. Для повного декодування ви можете викликати один із цих методів у циклі:

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 Дякую за це! Я не знав, що це не повністю працює лише одним дзвінком! Я бігав Uri.UnescapeDataStringдвічі і отримував те, що хотів !! : D
C0NFUS3D

2
ІМХО краще, ніж сприйнятий відповідь, оскільки ваша перша пропозиція також працює в бібліотеках портативних класів (PCL)
Даніель Вейхельман,

2
найкраща відповідь! але подумайте, як ваші парами вкладені, перш ніж повністю розшифрувати. наприклад, значення параметри може бути кодованою URL-адресою, яка сама має параметр з іншою кодованою URL-адресою. Якщо ви повністю розшифруєте її за один раз, ви більше не зможете сказати, що було. це було б як витягнути всі парени з алгебри. a = ((b + c) * d), якщо ви повністю не скасуєте його, значення компонентів можна втратити a = b + c * d
DanO

2
UnescapeDataString недостатня, оскільки він не буде обробляти декілька випадків (наприклад, параметри в URL-адресі, що містить пробіл "+", але UnescapeDataString навмисно не перетворює їх у пробіли). Урі обробляє більше, ніж просто URL-адресу, оскільки питання про URL-адресу ми повинні використовувати HttpUtility.UrlDecode
Lorenz03Tx



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.