Servlet:"%2B"被转换成空间

时间:2015-10-06 08:06:29

标签: java servlets get getparameter

我有一个非常简单的问题

我按如下方式形成一个GET请求,参数是

para1=abc+xyz

注意' +'在这里签名。现在,当我对其进行url编码时,我得到para1=abc%2Bxyz哪个好!

现在在servlet方面,我有类似下面的代码

String para1 = request.getParameter("para1")

para1的内容为abc xyz(注意空格)。

不应该是abc+xyz吗?我想要的值是从源发送的,而不是混乱的。

3 个答案:

答案 0 :(得分:2)

+ is decoded as space after url decoding. If you want to pass +, you need to encode it.

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);

or

var res = encodeURIComponent(uri);

答案 1 :(得分:1)

他们是等同的。 +符号和空格都被转换为空格。如果要发送文字+符号,则需要对其进行编码。

答案 2 :(得分:1)

您应该在将参数值发布到URL时对其进行编码。 您只需要使用

对参数值进行编码
  

URLEncoder.encode(paramValue,“UTF-8”);