java如何urlEncode
URL编码的基本概念
URL编码(Percent-Encoding)是将URL中的特殊字符转换为%后跟两位十六进制数的形式。例如,空格会被编码为%20。Java中常用java.net.URLEncoder类实现。
使用URLEncoder.encode()方法
Java标准库提供URLEncoder.encode(String s, String enc)方法,需指定字符串和字符编码(如UTF-8):
import java.net.URLEncoder;
import java.io.UnsupportedEncodingException;
public class Main {
public static void main(String[] args) {
try {
String original = "测试 & 编码";
String encoded = URLEncoder.encode(original, "UTF-8");
System.out.println(encoded); // 输出:%E6%B5%8B%E8%AF%95+%26+%E7%BC%96%E7%A0%81
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
注意:空格会被编码为+,若需强制转为%20,可手动替换:
encoded = encoded.replace("+", "%20");
处理不同字符集
若未指定字符集,可能因平台默认编码导致问题。务必显式指定字符集(如UTF-8):
String encoded = URLEncoder.encode("特殊字符@#", StandardCharsets.UTF_8.name());
注意事项
- 路径与查询参数区分:URL的路径部分和查询参数需分别编码。例如,
/path?key=value中的/path和key=value需分开处理。 - 保留字符:如
/,?,=等保留字符在URL中有特殊含义,需根据上下文决定是否编码。 - 多次编码问题:避免重复编码同一字符串,否则会导致
%被二次编码(如%20变为%2520)。
替代方案(Apache Commons)
若项目已引入Apache Commons,可使用org.apache.commons.text.StringEscapeUtils:
String encoded = StringEscapeUtils.escapeJava(urlString); // 需注意该方法并非专为URL设计
推荐优先使用标准库URLEncoder。

常见编码示例
| 字符 | 编码结果 |
|---|---|
| 空格 | %20或+ |
| & | %26 |
| 中文字符 | %E4%B8%AD(UTF-8) |
通过以上方法可灵活处理Java中的URL编码需求。






