请求参数类似于decrypt?param=5FHjiSJ6NOTmi7/+2tnnkQ==
。
在servlet中,当我尝试按String param = request.getParameter("param");
打印参数时,我得到5FHjiSJ6NOTmi7/ 2tnnkQ==
。它将角色+
变为空格。如何保留原始参数或如何正确处理角色+
。
此外,我应该处理哪些角色?
答案 0 :(得分:6)
您有两个选择
如果您可以控制URL的生成,则应choose this。如果不是......
如果您无法更改URL的生成方式(上图),则可以手动检索原始URL。 Certain methods decode parameters对你而言。 getParameter
就是其中之一。另一方面,getQueryString
不解码字符串。如果您只有几个参数,那么parse the value yourself就不难了。
request.getQueryString();
//?param=5FHjiSJ6NOTmi7/+2tnnkQ==
答案 1 :(得分:2)
如果您想使用' +'生成时需要对其进行编码的URL中的字符。对于' +'正确的编码是%2b
答案 2 :(得分:0)
使用URLEncoder,URLDecoder的静态方法来编码和解码URL。
例如: - 使用
对URL参数进行编码 URLEncoder.encode(url,"UTF-8")
返回服务器端,使用
解码此参数 URLDecoder.decode(url,"UTF-8")
decode方法返回已解码URL的String类型。
答案 3 :(得分:0)
虽然这个问题已有几年了,但我想写下我如何解决问题:在GWT页面中创建文件的下载链接
com.google.gwt.http.client.URL.encode(finalurl)
用于对URL进行编码。 问题是我们的客户在文件名中的“+”符号未编码/转义。所以我不得不删除URL.encode(finalurl)并使用
对url中的每个参数进行编码URL.encodePathSegment(fileName)
我知道我的问题与GWT绑定但看起来,URLEncoder.encode(字符串,编码)应仅应用于参数。