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

发布于 2024-09-10 08:23:14 字数 355 浏览 6 评论 0原文

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

"http:// /one.two/ Three?four Five”应该变成“ http://one.two/third?four%20 Five

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

帮助?

I get a url string from a user and would like to transform it to a legal http url:

"http://one.two/three?four five" should turn into "http://one.two/three?four%20five"

however, URLEncoder does not help, as it encodes the entire string (including the legal "://").

help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

江南烟雨〆相思醉 2024-09-17 08:23:14

使用 URL 类。例如:

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

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

Use the URL class. For example:

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

The third line might be different - for example constructing a new URL from all its parts.

终止放荡 2024-09-17 08:23:14

使用外部库:

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));

和输出:

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

和 Maven 依赖项

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>

With external library:

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

And the output:

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

Or

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

And the output:

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

And the Maven dependency

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文