Как закодировать URL в WinForms?

#c# #winforms #url #encode

#c# #winforms #url #закодировать

Вопрос:

Я создаю приложение Windows, и мне нужно передать закодированный URL. Но я не уверен, как закодировать его в WinForms C #?

Ответ №1:

Если вам нужно закодировать данные в URL для строки запроса, вы можете использовать либо Uri.EscapeDataString, либо, если вы не возражаете, сослаться на System.Веб, HttpUtility.UrlEncode:

 var rawString = @"this amp; that";
var uriEncoded = Uri.EscapeDataString(rawString);
var httpUtilityEncoded = HttpUtility.UrlEncode(rawString);
  

Они очень похожи, но могут давать слегка отличающиеся результаты в способе кодирования специальных символов, таких как пробелы:

 Console.WriteLine(uriEncoded);
// uriEncoded = "this & that"

Console.WriteLine(httpUtilityEncoded);
// httpUtilityEncoded = "this & that"
  

Комментарии:

1. Вы должны учитывать длину строки для URL-encode … если она больше 32768, вы должны использовать HttpUtility.UrlEncode .

Ответ №2:

Попробуйте Uri.EscapeUriString()

Ответ №3:

Вы пробовали с:

 var url = System.Net.WebUtility.UrlEncode(string);
  

Вам не нужна зависимость от System.Web и вы можете использовать его в PCL, я использовал его в своем проекте Xamarin forms.

Комментарии:

1. ОБНОВЛЕНИЕ: Если у вас нет доступа к классу HttpUtility из System. Web это означает, что его заменяют на WebUtility. В случае, если вы создаете UriBuilder класс, в который вы добавляете свою закодированную строку с UriBuilder.AppendFormat закодированным значением, оно будет в поле Builder.Uri.absoluteURI. Если вы скажете . toString() в классе UriBuilder будут закодированы не все символы. В этом случае я предпочитаю использовать umlauts, которые вы можете найти, например, в немецком языке.