web-dev-qa-db-ja.com

プラスサインインクエリ文字列

C#とasp.netを使用してwebappを作成しました。クエリ文字列にプラス(+)記号を付けてパラメーター値を配置しました。しかし、プラス記号は消えます。

消えずにクエリ文字列にプラス記号(+)を含めるにはどうすればよいですか?

お知らせ下さい。

ありがとう。

編集:UrlEncodeでコードを追加しました

string str = Server.UrlEncode(Requery.QueryString["new"]);
54
domlao

+記号は、クエリ文字列で意味的な意味を持ちます。スペースを表すために使用されます。クエリ文字列で意味的に重要な別の文字は、&です。これは、クエリ文字列内のさまざまなvar=valueペアを分離するために使用されます。

ほとんどのサーバー側スクリプトは、+が適切にスペースに変換されるように、クエリパラメーターを使用する前にデコードします。リテラル+をクエリ文字列に含める場合は、代わりに%2Bを指定する必要があります。

クエリ文字列内の+サインは、スペースにURLデコードされます。クエリ文字列の%2Bは、+記号にURLデコードされます。

の違いを見る

http://www.google.com/search?q=foo+bar

そして

http://www.google.com/search?q=foo%2Bbar

上記の例では、GoogleのサーバースクリプトはクエリパラメータをURLデコードし、それらを使用して検索を実行しています。

URLエンコードは、%記号の後に特殊文字の16進コードが続くだけです。たとえば、Aの16進コードは0x41(10進数:65)であることがわかります。これを試して:

http://www.google.com/search?q=%41

これによりURLエンコードが明確になることを願っています。

そのため、JavaScriptがクエリパラメータに+記号を含むURLをフェッチしているときに+記号を保持し、サーバー側スクリプトがURLデコード後にクエリパラメータを処理する場合は、 HTTP getリクエストの発行を使用する前にURLのクエリパラメータをURLエンコードして、リクエストがサーバー側スクリプトに到達したときにすべての+記号が%2Bに変換されるようにする必要があります。これで、サーバー側のスクリプトがクエリ文字列をURLデコードすると、すべての%2B+記号に変換され、必要なものに戻ります。

JavaScriptを使用してパラメーターをURLエンコードする方法については、 JavaScriptでURLをエンコードしますか? を参照してください。そこでの議論からの短い答え:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);
103
Susam Pal

HTML URL Encoding Reference を見てください

+記号をエンコードする必要があります-値は%2Bである必要があります

5
Morten Anderson

クエリ文字列値をURLEncodeして、特殊文字が失われないようにする必要があります。

5
DoctorMick

誰も混乱しないように、前のステートメントを変更します!

Server.UrlEncodeを使用してURLを作成します。例えば.

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");
1
gred

パラメーターを送信する前に、パラメーターにプラス記号が含まれているかどうかを確認する必要があります。たとえば、1つのフラグに置き換える必要がある場合:パラメーターは:klasjdlkasd + djid3223置き換えることができます:klasjdlkasdFLAGdjid3223

そして、あなたが変換に行くとき、あなたは再び交換する必要があります

klasjdlkasd + djid3223

0

他の簡単な方法は、Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)で、私のURLがhttp://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==

0
SharK