我有一个非常简单的问题
我按如下方式形成一个GET请求,参数是
para1=abc+xyz
注意' +'在这里签名。现在,当我对其进行url编码时,我得到para1=abc%2Bxyz
。 哪个好!
现在在servlet方面,我有类似下面的代码
String para1 = request.getParameter("para1")
para1
的内容为abc xyz
(注意空格)。
不应该是abc+xyz
吗?我想要的值是从源发送的,而不是混乱的。
答案 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");
var encoded = encodeURIComponent(str);
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”);