如何正确编码完整的http url字符串?

时间:2010-07-20 17:20:18

标签: java urlencode

我从用户那里获得了一个url字符串,并希望将其转换为合法的http url:

http://one.two/three?four”应变为“ http://one.two/three?four%20five

然而,URLEncoder没有帮助,因为它编码整个字符串(包括合法的“://”)。

帮助?

2 个答案:

答案 0 :(得分:6)

使用URL课程。例如:

URL url = new URL(urlString);
String encodedQueryString = URLEncoder.encode(url.getQuery());
String encodedUrl = urlString.replace(url.getQuery(), encodedQueryString);

第三行可能不同 - 例如从其所有部分构建新的URL

答案 1 :(得分:3)

使用外部库:

UITableView

输出:

import org.apache.commons.httpclient.util.URIUtil;
String myUrl_1= "http://one.two/three?four five";
System.out.println(URIUtil.encodeQuery(myUrl_1));

或者

http://one.two/three?four%20five

输出:

String webResourceURL = "http://stackoverflow.com/search?q=<script>alert(1)</script> s";
System.out.println(URIUtil.encodeQuery(webResourceURL));

Maven依赖

http://stackoverflow.com/search?q=%3Cscript%3Ealert(1)%3C/script%3E%20s