Я пытаюсь UrlEncode веб-адрес использовать Uri.EscapeDataString, но результат неверен. Вот пример:C# Uri.EscapeDataString добавляет неверный «% 25» в декодированной строке
string url = "https://mega.co.nz/#!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ";
string encodedUrl = Uri.EscapeDataString(url);
Ожидаемый результат будет:
https%3a%2f%2fmega.co.nz%2f%23!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ
Но реальное одно:
https%253a%252f%252fmega.co.nz%252f%2523%21GVZFwAbB%21NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ
Как вы можете видеть, что есть куча дополнительных %25
с, что дон Там есть. Разрядник нет для ""? В моей исходной строке нет %
s ... что происходит?
EDIT: Я не могу использовать System.Web assembly
для этого проекта, поэтому, к сожалению, я не могу использовать метод HttpUtility.UrlEncode()
для этого.
Странно, но ваш код работает правильно https://dotnetfiddle.net/ARkx9c –
Я этого не вижу. 'Uri.EscapeDataString' возвращает' https% 3A% 2F% 2Fmega.co.nz% 2F% 23! GVZFwAbB! NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ' для меня. По-видимому, возвращаемое значение позже снова закодировано в вашем проекте. – GSerg
@HamletHakobyan и GSerg: Ну, там уже есть несогласованность: JSFiddle от Hamlet кодирует «!» до «% 21», в то время как в вашей строке все еще есть «!». И на моей машине он добавляет% 25 и ALSO конвертирует «!». до "% 21". Кажется, что на каждой машине все по-другому ... Я потерян, чтобы быть честным. Выход GSerg является единственным правильным, но я не знаю, как его получить ... –