Как я кодирую URL?

Я имел подобная проблема недавно , который закончил тем, что был вызван стеком, который рассматривают по-другому в сборках конечных версий. Другие вещи, которые могут отличаться:

  • Выделение памяти обрабатывается по-другому со сборками отладки в компиляторе VS (т.е., пишущий 0xcc по очищенной памяти, и т.д.)
  • Развертывание цикла и другая оптимизация компилятора
  • Alightment указателей

10
задан i_am_jorf 22 September 2009 в 17:02
поделиться

4 ответа

Если ваша кодировка частей пути:

System.Uri.EscapeUriString("c#")

Если ваша кодировка «аргументы»:

String.Format( "http://something/?test={0}", System.Uri.EscapeDataString("c#") );
35
ответ дан 3 December 2019 в 13:35
поделиться

Кодировка URL-адреса используется для обеспечения включения специальных символов в URL-адрес (скорее всего, в строка запроса) не интерпретируются по ошибке как те, которые используются при синтаксическом анализе и обработке URL-адреса. Например, символ + используется для обозначения пробела в URL-адресе. Однако, если вы намеревались, чтобы символ + был частью вашей строки запроса, вам нужно было бы закодировать эту строку запроса перед ее отправкой в ​​браузер.

Например. Представьте, что вы написали страницу, которая получает математическое уравнение в строке запроса и отображает это уравнение на странице.

URL-адрес может быть: http://yoursite.com/displayMath.aspx?equation=3+5

Символ + в этом случае предназначен для того, чтобы быть значимой частью уравнения. Однако, без UrlEncode это будет интерпретироваться как представление пробела. При чтении этого значения из строки запроса на принимающей странице будет получено «3 5», что не является тем, что планировалось.

Вместо перенаправления на этот URL-адрес, вы сначала захотите URL-кодировать запрос. Вы можете написать следующий код:

строковое уравнение = "3 + 5";
строка url = String.Format (@ "http://yoursite.com/displayMath.aspx?equation={0}", формула);
строка encodedUrl = Server.UrlEncode (url);
Response.Redirect (encodedUrl);

Это гарантирует, что последующий Request.Querystring ["формула"] получит уравнение без изменений, потому что любые специальные символы сначала будут закодированы.

Я Не уверен, что понимаю ваш вариант использования кодирования URL-адресов. Если бы вы могли предоставить дополнительную информацию о том, чего пытаетесь достичь, я постараюсь ответить более полно. А пока надеюсь, что эта информация окажется полезной.

3
ответ дан 3 December 2019 в 13:35
поделиться

попробуйте это

  • в ASP.NET
    Server.UrlEncode("http://www.google.com/c#");
  • в WinForms, используя System.Web.dll

     HttpUtility.UrlEncode ("http://www.google.com/c#"); 
7
ответ дан 3 December 2019 в 13:35
поделиться

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

aspx:

Щелкните здесь

код позади:

myLink.Href = Page.ResolveClientUrl("~/MyPage.aspx") + "?id=" + 
   Server.UrlEncode("put here what ever you want to url encode"); 

Или, как в вашем вопросе:

myLink.Href = "http://www.google.com/")+Server.UrlEncode("C#");

, это будет помещено в html:

<a id="myLink" runat="server" target="_self" href="http://www.google.com/c+c%23">
0
ответ дан 3 December 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: