C#とasp.netを使用してwebappを作成しました。クエリ文字列にプラス(+)記号を付けてパラメーター値を配置しました。しかし、プラス記号は消えます。
消えずにクエリ文字列にプラス記号(+)を含めるにはどうすればよいですか?
お知らせ下さい。
ありがとう。
編集:UrlEncodeでコードを追加しました
string str = Server.UrlEncode(Requery.QueryString["new"]);
+
記号は、クエリ文字列で意味的な意味を持ちます。スペースを表すために使用されます。クエリ文字列で意味的に重要な別の文字は、&
です。これは、クエリ文字列内のさまざまな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);
HTML URL Encoding Reference を見てください
+記号をエンコードする必要があります-値は%2Bである必要があります
クエリ文字列値をURLEncodeして、特殊文字が失われないようにする必要があります。
誰も混乱しないように、前のステートメントを変更します!
Server.UrlEncodeを使用してURLを作成します。例えば.
string myUrl = "http://myurl?param1=" + Server.UrlEncode("my+param+1");
パラメーターを送信する前に、パラメーターにプラス記号が含まれているかどうかを確認する必要があります。たとえば、1つのフラグに置き換える必要がある場合:パラメーターは:klasjdlkasd + djid3223置き換えることができます:klasjdlkasdFLAGdjid3223
そして、あなたが変換に行くとき、あなたは再び交換する必要があります
klasjdlkasd + djid3223
他の簡単な方法は、Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)
で、私のURLがhttp://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==