击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!
由于HTML代码的空格通常会被浏览器忽略,所以我们很有必要对浏览器处理空格的一些规则有个详细的认识,这样我们后面才能详述它的解决办法。
效果是这样的:
由此可此可以知道浏览器的默认处理规则一:文字的前后空格都会忽略,内部连续空格只有自作一个。
原样输出可能是我们这样写代码的本意,要让这段代码原样输出的方法有两个(使用标签/使用表示空格的实体代码):
方法一:<pre><span class="space"> 小郑 搞码 </span></pre>
方法二:<span class="space"> 小郑 搞码 </span>
关于规则部分还有一点,来看一段代码:
效果是:
表示,浏览器对字符的处理不仅限于空格,还有制表符(\t),换行符(\r和\n)。
同样让这段代码换行可能是我们写的本意,让这段代码换行的方法有两个:
方法一:套一个pre标签
方法二:<span class="space">小郑<br/>搞码</span>
最后总结一下:
HTML语言的空格处理,基本上就是直接过滤。这样的处理过于粗糙,完全忽视了原始文本内部的空格可能是有意义的。所以CSS提供了一个属性white-space属性来灵活控制空格。下篇详述。
代码示例
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;
}
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=小黑
网页截图:
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=小+黑
网页截图:
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 是空格经过编码后的结果
从上面的案例可以看到,如果 url 中有空格出现,且不经过特殊处理,那么将会导致浏览器无法正确解析 url,从而导致 url 重定向失败,那么问题的原因是什么呢?首先来看一下URL的组成部分
下面是一个简单的 URL 链接:
bash复制代码http://localhost:8080/path/to/index.html?id=123#content
它主要有下面几个部分组成
在 URL 编码过程中,会遵循以下的规则:
*请认真填写需求信息,我们会在24小时内与您取得联系。