10 ответов:
Я считаю, что вы ищете HttpServerUtility.UrlEncode.
System.Web.HttpUtility.UrlEncode(string url)
другой способ сделать это с помощью
Uri.EscapeUriString(stringToEscape).
Я нашел полезным
System.Web.HttpUtility.UrlPathEncode(string str);Он заменяет пробелы на %20, а не +.
чтобы правильно экранировать пробелы, а также остальные специальные символы, используйте
System.Uri.EscapeDataString(string stringToEscape).
Как прокомментировал утвержденную историю, то HttpServerUtility.UrlEncode метод заменяет пробелы на + вместо %20. Вместо этого используйте один из этих двух методов:Uri.EscapeUriString () или Uri.EscapeDataString ()
пример кода:
HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg") //"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg" Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg"); //"https://mywebsite.com/api/get%20me%20this%20file.jpg" Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg"); //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg" //When your url has a query string: Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); //"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg" Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"
использовать
HttpServerUtility.UrlEncode
мне тоже нужно было это сделать, нашел этот вопрос много лет назад, но название вопроса и текст не совсем совпадают, и с помощью
Uri.EscapeDataStringилиUrlEncode(Не говори, пожалуйста!) обычно не имеет смысла, если мы не говорим о передаче URL-адресов в качестве параметров другим URL-адресам.(например, передача URL обратного вызова при выполнении проверки подлинности open ID, Azure AD и т. д.)
надеюсь, что это более прагматичный ответ на вопрос: я хочу сделать строку в a URL с помощью C#, должно быть что-то в .NET framework, что должно помочь, не так ли?
да - две функции полезны для создания строк URL в C#
String.Formatдля форматирования URLUri.EscapeDataStringдля экранирования любых параметров в URLкод
String.Format("https://site/app/?q={0}&redirectUrl={1}", Uri.EscapeDataString("search for cats"), Uri.EscapeDataString("https://mysite/myapp/?state=from idp"))производит этот результат
https://site/app/?q=search%20for%20cats&redirectUrl=https%3A%2F%2Fmysite%2Fmyappкоторый можно безопасно скопировать и вставить в a адресная строка браузера, или
srcатрибут HTMLAтег, или использоваться сcurl, или закодированные в QR-код, и т. д.
приведенный ниже код заменит повторяющееся пространство одним символом %20.
пример:
вход:
Code by Hitesh Jainвыход:
Code%20by%20Hitesh%20Jainкод
static void Main(string[] args) { Console.WriteLine("Enter a string"); string str = Console.ReadLine(); string replacedStr = null; // This loop will repalce all repeat black space in single space for (int i = 0; i < str.Length - 1; i++) { if (!(Convert.ToString(str[i]) == " " && Convert.ToString(str[i + 1]) == " ")) { replacedStr = replacedStr + str[i]; } } replacedStr = replacedStr + str[str.Length-1]; // Append last character replacedStr = replacedStr.Replace(" ", "%20"); Console.WriteLine(replacedStr); Console.ReadLine(); }
из документации:
String TestString = "This is a <Test String>."; String EncodedString = Server.HtmlEncode(TestString);но это на самом деле кодирует HTML, а не url. Вместо этого используйте UrlEncode (TestString).
Comments