1

我已经使用URLEncoder类对我的字符串(Say String a="123+gtyt")进行了编码。编码的字符串是String b。然后我将“String b”作为附加到 URL 的参数发送。让我们说http://example.com?request=b

当我使用 URLDecoder 在 example.com 上解码字符串时,我的字符串中的符号 + 丢失,解码后我没有得到“字符串 a”

现在,当我在未解码 example.com 上的“String b”的情况下打印时。我得到了 String a



所以我的疑问是在重定向时是否由浏览器本身完成解码?

4

1 回答 1

1

当您对“123+gtyt”进行编码时 - 它对加号进行编码。

当您处理 HTTP 请求时,servlet API 会自动将其解码为“123+gtyt”。如果您再次对其进行解码 - 它会将“+”更改为空格。

所以关键是 - 不要显式解码参数。

例如:

    final String encoded = URLEncoder.encode("123+gtyt");
    final String decoded = URLDecoder.decode(encoded);
    System.out.println("decoded = " + decoded); // 123+gtyt
    System.out.println("URLDecoder.decode(decoded) = " 
              + URLDecoder.decode(decoded)); // prints 123 gtyt
于 2012-04-14T13:39:36.587 回答