1

我有一个非常简单的问题

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

para1=abc+xyz

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

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

String para1 = request.getParameter("para1")

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

不应该abc+xyz吗?我希望该值与从源发送的一样,而不是混乱的值。

4

3 回答 3

2

+后被解码为空格url decoding。如果要通过+,则需要对其进行编码。

爪哇

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

阿贾克斯

var encoded = encodeURIComponent(str);

Javascript

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

或者

var res = encodeURIComponent(uri);
于 2015-10-06T08:12:29.953 回答
1

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

于 2015-10-06T08:07:32.017 回答
0

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

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

于 2015-10-06T12:03:18.607 回答