web-dev-qa-db-ja.com

クエリ文字列に特殊文字を含める方法

次のURLは正常に機能します。

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

ただし、「?」、「/」、「\」などの特殊な文字を「param」に入れたい場合、URLは次のようになります。

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

または

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

動作しません。この問題を解決するにはどうすればよいですか?

23
KentZhou

URLに特殊文字をエンコードする必要があります。参照: http://www.w3schools.com/tags/ref_urlencode.asp

21
Steven P.

クエリパラメータをエンコードしてからURLを形成する必要があります。ここで必要な関数は encodeURIComponent です。たとえば、

作成する必要があるURLは次のとおりです。

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

さて、それを仮定? /は変数として提供されます。URLに入れる前にエンコードする必要があります。したがって、この関数を使用してURLを作成しましょう(2つのクエリパラメータが必要です):

 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にあり、すべてのブラウザーでサポートされています。

8
Kop4lyf

JavaScriptでは、encodeURI()関数を使用できます。

ASPにはServer.URLEncode()関数があります。

HttpServerUtility.UrlEncode in .NET

3
Vishal Seth

Javascriptを使用してQueryString値に特殊文字を渡す簡単な方法:

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

特殊文字のエンコードを使用する必要があります。参照用に this ページを参照してください。

PHPを使用している場合、これを行う関数 rlencode() があります。

2
JYelton

私は以下でしたが、うまくいきます。

const myQueryParamValue = "You&Me";
const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)

文字をURLエンティティに置き換える必要があります。 ここにいくつかの情報

0
Moonshield