java代码实现 实现全路径URL的 encodeURI() encodeURIComponent() decodeURI() decodeURIComponent()
时间: 2024-10-09 07:14:04 浏览: 34
在Java中,`java.net.URI` 和 `java.net.URLEncoder` 类提供了解码和编码URL的功能。以下是这些函数的基本用法:
1. **encodeURI()**: 这个方法用于对URL的一部分进行编码,以便在网络上传输。它不会编码特殊字符 `%`,而是将其后面的两个十六进制数字视为UTF-8字符的编码。例如:
```java
import java.net.URI;
String unencoded = "http://example.com/path?query=包含#特殊字符";
URI uri = new URI(unencoded);
String encoded = uri.toString(); // "http://example.com/path?query=%E6%95%88%E7%A7%BB%23%E4%B8%AD%E7%BD%91%E6%96%87%E5%AD%97"
```
2. **encodeURIComponent()**: 这个方法不是Java内置的,但在某些场景下,如JavaScript,可能会用于编码URL查询字符串中的非字母数字字符。对于Java,通常会用到`encodeURI()`代替,因为它已经包含了需要的部分。
3. **decodeURI()**: 这个方法用于解码由`encodeURI()`编码的URL,将 `%XX` 编码形式还原为实际字符。
```java
import java.net.URI;
String encoded = "%E6%95%88%E7%A7%BB%23%E4%B8%AD%E7%BD%91%E6%96%87%E5%AD%97";
URI decodedUri = new URI(encoded);
String decodedPath = decodedUri.getPath(); // "包含#中文字符"
```
4. **decodeURIComponent()**: 与`decodeURI()`类似,用于解码由`encodeURIComponent()`编码的URL部分。在Java中,由于`encodeURI()`已经处理了这个需求,一般不需要单独使用。
需要注意的是,在实际使用时,你应该根据具体的上下文选择合适的方法,比如处理URL的路径、查询参数或片段标识符等。
阅读全文