Servlet:“%2B”转换为 space

Servlet: "%2B" is converted into space

我的问题很简单

我正在构造一个GET请求如下,参数为

para1=abc+xyz

注意这里的“+”号。现在,当我 url 编码时,我得到 para1=abc%2Bxyz没关系!

现在在 servlet 端,我有如下代码

String para1 = request.getParameter("para1")

para1的内容是abc xyz(注意space)。

不应该是abc+xyz吗?我希望值是从源发送的,而不是乱七八糟的。

它们是等价的。 + 号和 space 都被翻译成 space。如果要发送文字+号,则需要对其进行编码。

+url decoding之后被解码为space。如果要传+,需要编码

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

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

对参数值进行编码

URLEncoder.encode(paramValue, "UTF-8");