我有一个休息api,当我在浏览器中输入一个URL时,部分URL看起来像这样:
...where+%7B%0D%0A%3Fs+<http%3A%2F%2F...
实际上代表
...where { ?s <http://...
现在,当我必须通过我的JAVA代码调用相同的URl时,我知道URLEncoder用于编码URL。当我使用“UTF-8”格式时,“&lt;”在URL中也编码为%3C。
有没有任何编码方式可以“&lt;”和“&gt;”保留,而URL的其他部分,如空格和其他部分正确编码。
答案 0 :(得分:2)
原因“&lt;” get编码是因为它不是合法的URI字符。它与字符编码无关。
如果服务器没有正确处理转义序列,则需要修复它。
答案 1 :(得分:0)
你可以做到
URLEncoder.encode(urlString).replace("%3C", "<")
答案 2 :(得分:0)
URLEncoder.encode(url, "UTF-8").replaceAll("%3C", "<").replaceAll("%3E", ">");