java如何encodeuri
Java 中如何对 URI 进行编码
在 Java 中,可以使用 java.net.URLEncoder 或 java.net.URI 类来对 URI 进行编码。以下是两种常用的方法:
使用 URLEncoder.encode()
URLEncoder.encode() 方法用于将字符串编码为 application/x-www-form-urlencoded 格式,适用于对查询参数进行编码。默认使用 UTF-8 编码。
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
String originalUrl = "https://example.com/search?q=Java 编码测试";
String encodedUrl = URLEncoder.encode(originalUrl, StandardCharsets.UTF_8);
System.out.println(encodedUrl);
}
}
注意:URLEncoder.encode() 会对整个字符串进行编码,包括协议(http://)和路径分隔符(/)。如果只需要对查询参数部分编码,需手动拆分字符串。
使用 URI 类
java.net.URI 类可以更智能地处理 URI 编码,仅对需要编码的部分(如路径或查询参数)进行编码。
import java.net.URI;
import java.net.URISyntaxException;
public class Main {
public static void main(String[] args) throws URISyntaxException {
String scheme = "https";
String host = "example.com";
String path = "/search";
String query = "q=Java 编码测试";
URI uri = new URI(scheme, host, path, query, null);
System.out.println(uri.toASCIIString());
}
}
URI 类的构造函数会自动对路径和查询参数进行编码,但不会对协议和主机名编码。
手动处理查询参数
如果需要对查询参数单独编码,可以结合 URLEncoder 和字符串操作:

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
String baseUrl = "https://example.com/search?q=";
String query = "Java 编码测试";
String encodedQuery = URLEncoder.encode(query, StandardCharsets.UTF_8);
String fullUrl = baseUrl + encodedQuery;
System.out.println(fullUrl);
}
}
注意事项
URLEncoder.encode()会将空格编码为+,而URI类会编码为%20。- 如果需要对路径中的特殊字符编码,建议使用
URI类。 - 确保使用
StandardCharsets.UTF_8或其他正确的字符集,避免乱码问题。






