我使用 URLEncoder 类编码了我的字符串(Say String a =“123 + gtyt”)。编码的字符串是字符串b 。然后我发送“String b”作为附加到URL的参数。让我们说 http://example.com?request=b 。
当我使用URLDecoder解码example.com上的字符串时,我的字符串中的符号+丢失,解码后我没有收到“字符串a”
现在当我打印时没有解码example.com上的“String b”。我得到的字符串完全。
所以我怀疑解码是否是由浏览器本身在重定向时完成的?
答案 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