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");
var encoded = encodeURIComponent(str);
var uri = "my test.asp?name=ståle&car=saab";
var res = encodeURI(uri);
或
var res = encodeURIComponent(uri);
在将参数值发布到 URL 时,您应该始终对其进行编码。
您只需要使用
对参数值进行编码
URLEncoder.encode(paramValue, "UTF-8");
我的问题很简单
我正在构造一个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");
var encoded = encodeURIComponent(str);
var uri = "my test.asp?name=ståle&car=saab";
var res = encodeURI(uri);
或
var res = encodeURIComponent(uri);
在将参数值发布到 URL 时,您应该始终对其进行编码。 您只需要使用
对参数值进行编码URLEncoder.encode(paramValue, "UTF-8");