2014-11-22 2 views
1

Я пытаюсь 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() для этого.

+0

Странно, но ваш код работает правильно https://dotnetfiddle.net/ARkx9c –

+0

Я этого не вижу. 'Uri.EscapeDataString' возвращает' https% 3A% 2F% 2Fmega.co.nz% 2F% 23! GVZFwAbB! NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ' для меня. По-видимому, возвращаемое значение позже снова закодировано в вашем проекте. – GSerg

+0

@HamletHakobyan и GSerg: Ну, там уже есть несогласованность: JSFiddle от Hamlet кодирует «!» до «% 21», в то время как в вашей строке все еще есть «!». И на моей машине он добавляет% 25 и ALSO конвертирует «!». до "% 21". Кажется, что на каждой машине все по-другому ... Я потерян, чтобы быть честным. Выход GSerg является единственным правильным, но я не знаю, как его получить ... –

ответ

1

Ну, после поиска вокруг немного больше, мне кажется, что это делает работу, не полагаясь на системы сети:

System.Net.WebUtility.UrlEncode(url); 

Кодирование является правильный, без %25 s.

1

Uri.EscapeDataString не кодирует URL. Вместо этого используйте HttpUtility.UrlEncode.

string url = "https://mega.co.nz/#!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ"; 
string encodedUrl = HttpUtility.UrlEncode(url); 

Результат:

https%3a%2f%2fmega.co.nz%2f%23!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ 
+0

К сожалению, по причинам, в которых я не буду вас утомлять, я не могу использовать сборку System.Web для этого проекта, поэтому я не могу использовать HttpUtility –

Смежные вопросы