2015-10-06 22 views
0

我有非常簡單的問題Servlet的:「%2B」被轉換成空間

我形成一個GET請求如下,參數是

para1=abc+xyz 

通知的「+」符號在這裏。現在,當我對這個URL進行編碼時,我得到了para1=abc%2Bxyz哪個好!現在

上的servlet的一面,我有這樣的代碼如下

String para1 = request.getParameter("para1") 

內容的para1abc xyz(注意空間)。

是不是應該是abc+xyz?我希望價值是從源頭髮出的,而不是混亂的價值。

回答

0

+被解碼爲url decoding之後的空格。如果您想通過+,則需要對其進行編碼。

的Java

String ecodedValue = URLEncoder.encode("abc+xyz", "UTF-8"); 
String decodedValue = URLDecoder.decode(ecodedValue, "UTF-8"); 

Ajax

var encoded = encodeURIComponent(str); 

Javascript

var uri = "my test.asp?name=ståle&car=saab"; 
var res = encodeURI(uri); 

var res = encodeURIComponent(uri); 
1

它們是等效的。 +符號和空格都被轉換爲空格。如果你想發送一個文字+符號,你需要對它進行編碼。

1

您應該始終在將參數值發佈到URL時對其進行編碼。 你只需要使用編碼參數值,

URLEncoder.encode(paramValue,「UTF-8」);