2012-04-22 87 views
3

Hei。我使用POST方法將一些信息從JSP發送到Servlet。我無法理解爲什麼當我通過POST方法發送一個「+」字符時,它將被替換爲一個空格字符。例如:當我輸入以下字符串: 4 + 5 - > Servlet將返回4 5;它取代了所有的「+」號。我該如何解決這個問題?我真的需要「+」字符是可見的,因爲之後我需要評估表達式。POST方法替換'+'字符

+1

「+」是一個特殊字符。在一個URL中,你需要對它進行編碼,用「%2B」代替它。這是一個特殊字符替換列表:http://www.blooberry.com/indexdot/html/topics/urlencoding.htm – 2012-04-22 18:45:28

+0

@BenoitCourtine數據通過POST發送,而不是URL的一部分。但是,該帖子很可能是通過內容類型的application/x-www-form-urlencoded發送的,這使您的基本點仍然有效。 – 2012-04-22 18:51:41

回答

1

您需要將您的數據發送到服務器之前URLEncode。服務器試圖解碼未編碼的數據 - 結果是+被解碼到一個空間。

1

該servlet顯然希望數據以URL編碼到達,如W3 document on HTTP form submission中所述。您需要更改POST的內容類型或(更好地)編碼您發送的數據。您可以將「+」符號編碼爲「%2B」。

1

編碼URL時,+字符表示空格。如果你需要在URL中使用該字符,你必須逃脫這樣的:

4+5 

變爲

4%2B5