2012-04-22 20 views
3

Hei。 POSTメソッドを使用して、JSPからサーブレットに情報を送信しています。 POSTメソッドを使って "+"文字を送信すると、スペース文字で置き換えられる理由を理解できません。例:次の文字列を入力すると: 4 + 5 - >サーブレットは4 5を返します。すべての "+"記号を置き換えます。どうすればこの問題を解決できますか?それ以降は式を評価する必要があるので、実際には "+"文字が表示される必要があります。'+'文字を置き換えるPOSTメソッド

+1

になり、特殊な文字です。 URLでは、 "%2B"に置き換えてエンコードする必要があります。特別な文字の置き換えのリストは次のとおりです。http://www.blooberry.com/indexdot/html/topics/urlencoding.htm –

+0

@BenoitCourtineデータは、URLの一部ではなく、POST経由で送信されています。しかし、ポストはコンテンツタイプがapplication/x-www-form-urlencodedで送信される可能性が最も高いため、基本的な点は依然として有効です。 –

答えて

3

フォーム変数にURLエンコードが送信されます。 「+」のプラス文字は、スペースのURLエンコーディング(1つ)です。また

参照: AJAX POST and Plus Sign (+) -- How to Encode?

リテラルプラス記号を送信する場合は、いずれかのJavascriptまたはハードコード化された「%2Bの」を通してそれをエンコードURLする必要があります。

1

サーバーに送信する前にデータをURLEncodeにする必要があります。サーバーはエンコードされていないデータをデコードしようとしています。その結果、+がスペースにデコードされます。

1

W3 document on HTTP form submissionで説明されているように、サーブレットは明らかにデータがURLエンコードで到着することを期待しています。 POSTのコンテンツタイプを変更するか、送信しているデータを(よりうまく)エンコードする必要があります。 "+"記号を "%2B"としてエンコードすることができます。

1

URLをエンコードする場合、+文字はスペースを示します。あなたはURLでこの文字を使用する必要がある場合、あなたはこのようにそれをエスケープする必要があります:

4+5 

は、「+」

4%2B5 
関連する問題