擊右上方紅色按鈕關注“小鄭搞碼事”,每天都能學到知識,搞懂一個問題!
由于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小時內與您取得聯系。