2010-05-13 2 views
11

Следующий URL работает отлично:Как включить специальные символы в строках запроса

http://localhost/mysite/mypage?param=123

Однако, если я хочу поставить некоторые специальные символы в `пары, как, /, \, то URL становится:

http://localhost/mysite/mypage?param=a=?&b=/

или

http://localhost/mysite/mypage?param=http://www.mysite.com/page2?a= \ & Ь = ...

, который не будет работать. Как решить эту проблему?

ответ

1

Вам необходимо использовать специальные символы кодировки, см. Страницу this для справки.

Если вы используете PHP, для этого есть функция, которая называется urlencode().

3

В JavaScript вы можете использовать функцию encodeURI().

ASP имеет Server.URLEncode() Функция.

HttpServerUtility.UrlEncode в .NET

+0

в .Net вы хотите использовать 'HttpUtility.UrlEncode' https://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode(v=vs.110).aspx – GJKH

2

Легкий способ передать значение QueryString со специальным символом, с помощью JavaScript:

var newURL=encodeURIComponent(uri); 
window.location="/abc/abc?q="+newURL; 
4

Вам нужно кодировать параметры запроса перед объединением их, чтобы сформировать URL. Функция нужна здесь encodeURIComponent .Для например,

URL, вам нужно создать это:

http://localhost/mysite/mypage?param=a=?&b=/ 

Теперь, если предположить, что? и/приходит как переменные, вам нужно закодировать их, прежде чем вводить URL-адрес. Так позволяет создать URL с помощью этой функции (я ожидающей два параметра запроса):

var q1 = "a=?"; //came from some input or something 
    var q2 = "/"; //came from somewhere else 

    var faultyUrl = "http://localhost/mysite/mypage?param="+ q1 +"&b=" + q2; 
// "http://localhost/mysite/mypage?param=a=?&b=/" 


    var properUrl = "http://localhost/mysite/mypage?param="+ encodeURIComponent(q1) +"&b=" + encodeURIComponent(q2); 
//"http://localhost/mysite/mypage?param=a%3D%3F&b=%2F" 

Эта функция в основном JS и поддерживается во всех браузерах.

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