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

Java Servlet:";%2B“;被转换成空间,java,servlets,get,getparameter,Java,Servlets,Get,Getparameter,我有一个很简单的问题 我正在形成一个GET请求,如下所示,参数是 para1=abc+xyz 注意这里的“+”符号。现在,当我对其进行url编码时,我得到了para1=abc%2Bxyz。没关系 现在在servlet方面,我有如下代码 String para1 = request.getParameter("para1") para1的内容是abc xyz(注意空格) 它不应该是abc+xyz吗?我希望值与从源代码发送的值相同,而不是混乱的值 它们是等价的。+符号和空格都转换为空格。如果要发

我有一个很简单的问题

我正在形成一个GET请求,如下所示,参数是

para1=abc+xyz
注意这里的“+”符号。现在,当我对其进行url编码时,我得到了
para1=abc%2Bxyz
。没关系

现在在servlet方面,我有如下代码

String para1 = request.getParameter("para1")
para1
的内容是
abc xyz
(注意空格)


它不应该是abc+xyz吗?我希望值与从源代码发送的值相同,而不是混乱的值

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

+
url解码后解码为空格。如果要传递
+
,则需要对其进行编码

爪哇


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

urlcoder.encode(参数值,“UTF-8”)

 String ecodedValue = URLEncoder.encode("abc+xyz", "UTF-8");
 String decodedValue = URLDecoder.decode(ecodedValue, "UTF-8");
var encoded = encodeURIComponent(str);
var uri = "my test.asp?name=ståle&car=saab";
var res = encodeURI(uri);
var res = encodeURIComponent(uri);