听说还有人不会,处理网页 URL 中的特殊字符 “空格” 问题

网页 URL 中的特殊字符 “空格” 问题

Java 代码案例

1、将一段内容和接口拼接成 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

粘贴到浏览器上会被浏览器解码出来给用户看到:

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 中有空格出现,且不经过特殊处理,那么将会导致浏览器无法正确解析 url,从而导致 url 重定向失败,那么问题的原因是什么呢?首先来看一下URL的组成部分

1、URL 的组成部分

下面是一个简单的 URL 链接:

bash复制代码http://localhost:8080/path/to/index.html?id=123#content

它主要有下面几个部分组成

2、URL 编码中遵循的规则

在 URL 编码过程中,会遵循以下的规则:

3、为何 URL 中不允许包含空格和部分特殊字符

展开阅读全文

页面更新:2024-05-18

标签:空格   网页   歧义   端口   路径   字符   浏览器   协议   参数   代码

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top