プラス記号のクエリ文字列 質問する

プラス記号のクエリ文字列 質問する

C# と asp.net を使用して作成した Web アプリケーションがあります。クエリ文字列にプラス記号 (+) を付けてパラメータ値を配置しました。しかし、プラス記号が消えてしまいます。

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

お知らせ下さい。

ありがとう。

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

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

ベストアンサー1

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

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

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

違いを見てください

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

そして

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

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

URL エンコードは、%記号に続いて特殊文字の 16 進コードが続くだけです。たとえば、の 16 進コードはA0x41 (10 進数: 65) であることがわかっています。次のように試してください。

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

これで URL エンコードが明確になると思います。

したがって、+JavaScript が+クエリ パラメータに記号を含む URL を取得し、サーバー側スクリプトが URL デコード後にクエリ パラメータを処理するときに記号を保持したい場合は、HTTP GET 要求を発行する前に URL 内のクエリ パラメータを URL エンコードして、要求がサーバー側スクリプトに到達したときにすべての+記号が 's に変換されるように%2Bする必要があります。これで、サーバー側スクリプトがクエリ文字列を URL デコードすると、すべての's が目的どおりに記号%2Bに変換されます。+

見るJavaScript で URL をエンコードしますか?JavaScript を使用してパラメータを URL エンコードする方法を学びます。そこでの議論からの短い回答:

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

おすすめ記事