我的一个查询参数中有一个哈希键,可能与其他特殊字符一起使用加号。问题是当此URL被解码时,URLDecoder将+符号转换为空格。 有没有办法强制URLDecoder不将 "+" 转换为空格。
我的一个查询参数中有一个哈希键,可能与其他特殊字符一起使用加号。问题是当此URL被解码时,URLDecoder将+符号转换为空格。 有没有办法强制URLDecoder不将 "+" 转换为空格。
在解码之前,请对您的字符串执行以下操作:
String plusEncoded = yourString.replaceAll("\\+", "%2b")
解码器应该显示+
的地方,代码中缺失了这个符号。%2B
替换加号。不要替换整个URL中的每个加号(+),因为这可能会破坏其他应包含空格的字符串参数。这个问题有一个类似的错误参考,已经被标记为“不是问题”。我引用一下指派人所说的话:
https://docs.oracle.com/javase/8/docs/api/java/net/URL.html 上的 Java API 文档明确说明:“URLEncoder 和 URLDecoder 类也可以用于 HTML 表单编码,但这与 RFC2396 中定义的编码方案不同。”。这意味着它不适用于 URL 编码,并且会导致路径中的空格和加号出现问题。使用 URL 或 URI 类来构造 URL 将会得到预期的结果。
URL url = new URL(input);
System.out.println(url.toString()); //outputs http://www.example.com/some+thing
+
编码为%2B
。 - kennytm