我如何在Java中转义URL(文档不清楚)?

Čik*_*nad 7 java url escaping

我找到了各种用Java完成转义的帖子java.net.URLEncoder.encode.但是我在文档中URL找到了:

URLEncoderURLDecoder类也可以使用,但只为HTML形式的编码,这是不一样的在RFC2396中定义的编码方案.

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

小智 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
Run Code Online (Sandbox Code Playgroud)

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

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

从URI中,您可以通过执行以下操作获取URL:

URL uri.toURL();
Run Code Online (Sandbox Code Playgroud)


Eel*_*lke 4

该文档正确地建议使用 URI 类。URLEncoder 仍然被提及的原因是我猜测历史原因 URLEncoder 从 1.0 就已经存在,而 URI 是在 1.4 中添加的。