网页URL中的特殊字符“空格”Java代码示例1、将一段内容和socket拼接成URL链接
代码示例
java复制代码public static String generateContent(String content) {
// 将 content 进行 url 编码
String ans;
try {
ans = URLEncoder.encode(content, "UTF-8");
} catch (UnsupportedEncodingException e) {
// 处理异常情况
throw new RuntimeException(e);
}
return ans;
}
1、无空格处理
java复制代码public static void main(String[] args) {
String baseUrl = "https://example.com/resource?a=";
String content = "小黑";
String ansUrl = baseUrl + generateContent(content);
System.out.println("最终生成的 URL 的值为:" + ansUrl);
}
运行结果:
perl复制代码https://example.com/resource?a=%E5%B0%8F%E9%BB%91
将其粘贴到浏览器上,浏览器将对其进行解码,让用户听到:
ini复制代码example.com/resource?a=小黑
网页截图:
2. 带空格的处理
java复制代码public static void main(String[] args) {
String baseUrl = "https://example.com/resource?a=";
String content = "小 黑";
String ansUrl = baseUrl + generateContent(content);
System.out.println("最终生成的 URL 的值为:" + ansUrl);
}
运行结果:
perl复制代码https://example.com/resource?a=%E5%B0%8F+%E9%BB%91
将其粘贴到浏览器上html字符串拼接,浏览器将对其进行解码,让用户听到:
ini复制代码https://example.com/resource?a=小+黑
网页截图:
3、解决空间问题
java复制代码public static String generateContent(String content) {
// 将 content 进行 url 编码
String ans;
try {
// -----------------------调整-----------------------
ans = URLEncoder.encode(content, "UTF-8").replace("+", "%20");
} catch (UnsupportedEncodingException e) {
// 处理异常情况
throw new RuntimeException(e);
}
return ans;
}
public static void main(String[] args) {
String baseUrl = "https://example.com/resource?a=";
String content = "小 黑";
String ansUrl = baseUrl + generateContent(content);
System.out.println("最终生成的 URL 的值为:" + ansUrl);
}
运行结果:
perl复制代码https://example.com/resource?a=%E5%B0%8F%20%E9%BB%91
将其粘贴到浏览器上,浏览器将对其进行解码,让用户听到:
ini复制代码https://example.com/resource?a=小 黑
网页截图:
其中%20是对空格进行编码的结果
2. 解决问题的激励
从里面的案例我们可以看出,如果url中存在空格而不进行特殊处理html字符串拼接,浏览器将无法正确解析url,从而导致url重定向失败。 那么问题产生的原因是什么呢?首先看URL的组成部分
1. URL的组成部分
这是一个简单的 URL 链接:
bash复制代码http://localhost:8080/path/to/index.html?id=123#content
主要由以下几部分组成
用户名和密码(可选):基本HTTP认证的用户名和密码; 2. URL编码遵循的规则
URL编码时遵循以下规则:
3. 为什么URL中不允许有空格和一些特殊字符