4

请求参数就像decrypt?param=5FHjiSJ6NOTmi7/+2tnnkQ==.

在 servlet 中,当我尝试打印参数时,String param = request.getParameter("param");我得到5FHjiSJ6NOTmi7/ 2tnnkQ==. 它将字符+变成一个空间。如何保留原始参数或如何正确处理角色+

此外,我还应该处理哪些字符?

4

4 回答 4

7

你有两个选择

URL 编码参数

如果您可以控制 URL 的生成,您应该选择这个。如果不...

手动检索参数

如果您无法更改 URL 的生成方式(上图),那么您可以手动检索原始 URL。 某些方法会为您解码参数getParameter是其中之一。另一方面,getQueryString不解码字符串。如果您只有几个参数,那么自己解析值应该不难。

request.getQueryString();
//?param=5FHjiSJ6NOTmi7/+2tnnkQ==
于 2013-10-10T22:05:13.047 回答
2

如果要在 URL 中使用“+”字符,则需要在生成 URL 时对其进行编码。对于“+”,正确的编码是 %2b

于 2013-10-10T20:39:30.713 回答
0

使用 URLEncoder、URLDecoder 的静态方法对 URL 进行编码和解码。

例如: - 使用编码 URL 参数

    URLEncoder.encode(url,"UTF-8") 

回到服务器端,使用解码这个参数

    URLDecoder.decode(url,"UTF-8") 

decode 方法返回解码后的 URL 的 String 类型。

于 2013-10-10T18:10:16.273 回答
0

尽管这个问题已经有好几年了,但我想写下我是如何解决这个问题的:文件的下载链接是在 GWT 页面中创建的,其中

com.google.gwt.http.client.URL.encode(finalurl)

用于对 URL 进行编码。问题是我们的客户在文件名中的“+”号没有被编码/转义。所以我不得不删除 URL.encode(finalurl) 并对 url 中的每个参数进行编码

URL.encodePathSegment(fileName)

我知道我的问题与 GWT 相关,但似乎 URLEncoder.encode(string, encoding) 也应该只应用于参数。

于 2016-09-23T14:01:01.793 回答