url的这两个url编码有区别的原因是什么
What is the reason for the difference between these two urlencodings of url
我发送到服务器的一些编码为 UTF-8 的查询没有return预期结果。
即
在我的应用程序中只有 return 两个结果(结果被 return 编辑为 Xml),如果我直接放入 Firefox 浏览器则只有 2 个结果
但是,如果我将未编码的 url 值放入 Firefox
http://direct.jthinkws.com?type=release&query=artist:(Dinosaur~0.7 AND Jr.) AND (+track:"Forget The Swan" +track:"Just Like Heaven" ) AND 曲目:[2 到 100] 和 src:1&limit=20&offset=0
它returns 44 个文件
从我的服务器上我可以看到我收到了以下请求,我认为它必须是对数据进行编码的 firefox
如您所见,它的编码略有不同 - 空格被转换为“%20”而不是“+”,并且“(”和“)”未被转换。
我不明白其中的区别以及为什么一个有效而一个无效,也不明白为什么一个无效 return 有些结果没有那么多。
(我还尝试将编码编码为 ISO-8859-1 而不是 UTf-8),但完全失败了,服务器无法对其进行解码,所以我确定 UTf8 是正确的编码。
我的代码是用 Java 编写的,它使用 UREncoder 对查询值进行编码,即
String query = URLEncoder.encode(queryValue.toString(), StandardCharsets.UTF_8.name());
我用错了方法绕过我的代码实际上工作正常它应该只有 return 两个结果。
问题是 Firefox 无法正确编码 +,假设它们已经编码为空格。因此,您不能总是依赖 Firefox 正确编码您粘贴到其中的未编码 url。
这个问题不是 Firefox 特有的,可能是没有浏览器能够正确编码。因此,如果您使用的 url 包含“+”,请小心。
我发送到服务器的一些编码为 UTF-8 的查询没有return预期结果。
即
在我的应用程序中只有 return 两个结果(结果被 return 编辑为 Xml),如果我直接放入 Firefox 浏览器则只有 2 个结果
但是,如果我将未编码的 url 值放入 Firefox
http://direct.jthinkws.com?type=release&query=artist:(Dinosaur~0.7 AND Jr.) AND (+track:"Forget The Swan" +track:"Just Like Heaven" ) AND 曲目:[2 到 100] 和 src:1&limit=20&offset=0
它returns 44 个文件
从我的服务器上我可以看到我收到了以下请求,我认为它必须是对数据进行编码的 firefox
如您所见,它的编码略有不同 - 空格被转换为“%20”而不是“+”,并且“(”和“)”未被转换。
我不明白其中的区别以及为什么一个有效而一个无效,也不明白为什么一个无效 return 有些结果没有那么多。
(我还尝试将编码编码为 ISO-8859-1 而不是 UTf-8),但完全失败了,服务器无法对其进行解码,所以我确定 UTf8 是正确的编码。
我的代码是用 Java 编写的,它使用 UREncoder 对查询值进行编码,即
String query = URLEncoder.encode(queryValue.toString(), StandardCharsets.UTF_8.name());
我用错了方法绕过我的代码实际上工作正常它应该只有 return 两个结果。
问题是 Firefox 无法正确编码 +,假设它们已经编码为空格。因此,您不能总是依赖 Firefox 正确编码您粘贴到其中的未编码 url。
这个问题不是 Firefox 特有的,可能是没有浏览器能够正确编码。因此,如果您使用的 url 包含“+”,请小心。