java – url的这两个urlencodings之间的区别是什么原因
我发送到服务器的一些编码为UTF-8的查询未返回期望结果.
即 http://direct.jthinkws.com?type=release&query=artist%3A%28Dinosaur%7E0.7+AND+Jr.%29++AND++%28%2Btrack%3A%22Forget+The+Swan%22+%2Btrack%3A%22Just+Like+Heaven%22+%29++AND+tracks%3A%5B2+TO+100%5D++AND+src%3A1&limit=20&offset=0 在我的应用程序中只返回两个结果(结果以Xml形式返回),如果直接放入Firefox浏览器,则只返回2个结果 但是,如果我将非编码的url值放入Firefox中 http://direct.jthinkws.com?type=releaseu0026amp;query=artist:(Dinosaur~0.7 AND Jr.)AND(曲目:“忘记天鹅”曲目:“Just Like Heaven”)并追踪:[2 to 100 ] AND src:1& limit = 20& offset = 0 它返回44个文件 从我的服务器,我可以看到我得到以下请求,我认为必须是firefox编码数据 http://direct.jthinkws.com?type=release&query=artist:(Dinosaur~0.7%20AND%20Jr.)%20%20AND%20%20(+track:”Forget%20The%20Swan”%20+track:”Just%20Like%20Heaven”%20)%20%20AND%20tracks:[2%20TO%20100]%20%20AND%20src:1&limit=20&offset=0 你可以看到它的编码方式略有不同 – 空格被转换为”not”,而'(‘和’)’没有被转换. 我不明白其中的差异,为什么一个有效,有一个没有,为什么那个不起作用的东西确实会返回一些不那么多的结果. (我也尝试编码为ISO-8859-1而不是UTf-8)并且完全失败了服务器无法解码它所以我确信UTf8是正确的编码. 我的代码是用Java编写的,它使用UREncoder编码查询的值,即 String query = URLEncoder.encode(queryValue.toString(),StandardCharsets.UTF_8.name()); 解决方法
我有这个错误的方式围绕我的代码实际工作正常它应该只返回两个结果.
问题是Firefox无法正确编码,假设它们已经是编码空间.因此,您无法始终依赖Firefox来正确编码粘贴到其中的未编码网址. 这个问题不是特定于Firefox,也许没有浏览器可以设法正确编码.因此,如果你使用的网址包括’小心. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |