#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, которые вы можете найти, например, в немецком языке.