谁解码URLencoding?

时间:2012-04-14 13:07:13

标签: java decoding url-encoding

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

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

现在当我打印时没有解码example.com上的“String b”。我得到的字符串完全

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

1 个答案:

答案 0 :(得分: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