@ogi Dzięki za to! Nie wiedziałem, że to nie działa w pełni po jednym połączeniu! Pobiegłem Uri.UnescapeDataStringdwa razy i dostałem to, czego chciałem! : D
C0NFUS3D
2
IMHO lepsze niż otrzymana odpowiedź, ponieważ twoja pierwsza sugestia działa również w przenośnych bibliotekach klas (PCL)
Daniel Veihelmann
2
najlepsza odpowiedź! ale zastanów się, w jaki sposób parametry są zagnieżdżone, zanim w pełni zdekodujesz. np. wartość parametru może być zakodowanym adresem URL, który sam ma parametr z innym zakodowanym adresem URL. Jeśli w pełni zdekodujesz go za jednym razem, nie będziesz w stanie powiedzieć, co było czym. byłoby to jak wyciągnięcie wszystkich par z algebry. a = ((b + c) * d) jeśli całkowicie odłączysz się od tego, znaczenie komponentów może zostać utracone a = b + c * d
DanO
2
UnescapeDataString nie jest wystarczające, ponieważ nie obsługuje kilku przypadków (na przykład parametry w adresie URL zawierające spację używają znaku „+”, ale UnescapeDataString celowo nie konwertuje ich na spacje). Uri obsługuje więcej niż tylko URL, ponieważ pytanie dotyczy adresu URL, powinniśmy użyć HttpUtility.UrlDecode
System.Web.HttpServerUtilityBase
, ale to powinno być już zaimportowane w ASP.NET MVC.lub
Adres URL nie jest w pełni odkodowany przy jednym wywołaniu. Aby w pełni zdekodować, możesz wywołać jedną z tych metod w pętli:
źródło
Uri.UnescapeDataString
dwa razy i dostałem to, czego chciałem! : DCzy próbowałeś
HttpServerUtility.UrlDecode
lubHttpUtility.UrlDecode
?źródło
HttpServerUtility.UrlDecode
która jest instancją, należy użyćHttpContext.Current.Server.UrlDecode
.Spróbuj tego:
źródło
Próbować:
źródło