2010-12-07 19 views
1

私の質問に "++"があったのは非常に奇妙な問題でした。しかし、文字列にクエリの値を代入すると、++は2つのスペースになります。クエリーストリングとして渡されているものを正確に取得するにはどうすればよいですか?特殊文字を使用したC#でのクエルチングの問題

クエリーコレクションに「++」があり、Request.QueryString ["search"]を実行したときにToString()が "++"になり、イミディエイトウィンドウがチェックされました。

私はC#2.0

URLを使用します。

string t = Request.QueryString["search"].ToString(); 
+0

+は通常、URLエンコードのスペースに変換されます。それが彼らが消える理由です。 –

答えて

2

クエリー文字列のプラス記号はスペースに変換されます。スペースではなく実際のプラス記号が必要な場合は、代わりに%2Bを使用してください。

/default.aspx?search=test%2B%2B 

あなたはコードでこれをやっている場合は、クエリ文字列のこの部分をエンコードするためにUrlEncodeを使用する必要があります。

+0

ありがとうアダムありがとう...私は正規表現を%2Bで置き換えてからjavascript escape()を呼び出し、C#で%2bを+正規表現で置き換えてServer.urlEncode( )...他のすべての文字は簡単に処理されますが、+ – Amit

8

/default.aspx?search=test++あなたは、これらの方法は、あなたが挿入しているすべての時間を使用する必要がありますUrlEncodeUrlDecode

を使用する必要がありますユーザが入力したデータをクエリ文字列に追加します。

+1

また、エンコーディングを便利な方法で指定することもできます:) –

2

'+' is reserved in query strings。クエリコンポーネント、 文字以内

";"、 "/"、 ":"、 "@"、 "&"、 "="、 "+"、 " ""?" 、 "$"は 予約済みです。

UrlEncodeを使用して、クエリ文字列をエンコードしてみてください。

+0

アップデートのおかげで、JS escape()関数で他のすべての文字を扱うことができますが、+ではなく、正規表現の置き換えが必要でした。 – Amit

1

正確なテキストをクエリに渡す方法があるかどうかわかりません。 HTTPの標準では、基本的には+が空白文字に相当すると言われているので、+を保存したい場合は、クエリー文字列をエンコードする必要があります。

関連する問題