7

我发现了各种使用 Java 进行转义的帖子java.net.URLEncoder.encode。但是我在文档中URL找到了:

和类也可以使用,但仅用于 HTML 表单编码,URLEncoderURLDecoderRFC2396 中定义的编码方案不同。

有人可以解释一下这种情况吗?

4

3 回答 3

7

您可以使用 URI。例如:

URI uri = new URI("http","google.com","/ a z.html","asd= z%#@@#");
System.out.println(uri.toString());
//returns http://google.com/%20a%20z.html#asd=%20z%25%23@@%23

请注意,单参数构造函数不会转义字符,因此如果您执行以下操作,它将引发异常:

URI uri = new URI("http://google.com/ a z.html?asd= z%#@@#");

从 URI 中,您可以通过以下方式获取 URL:

URL uri.toURL();
于 2012-10-28T07:14:00.517 回答
4

该文档正确地建议使用 URI 类。仍然提到 URLEncoder 的原因是我猜历史原因 URLEncoder 自 1.0 以来一直存在,而 URI 是在 1.4 中添加的。

于 2012-10-28T06:55:41.307 回答
4

URLEncoder,尽管它的名字,是用于编码 URL参数或 POST 参数。

在查询字符串之前正确编码 URL 的正确方法是通过 new URI(null, String, null).toURL()。

于 2012-10-28T07:03:21.913 回答