Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
擊右上方紅色按鈕關(guān)注“小鄭搞碼事”,每天都能學(xué)到知識(shí),搞懂一個(gè)問(wèn)題!
由于HTML代碼的空格通常會(huì)被瀏覽器忽略,所以我們很有必要對(duì)瀏覽器處理空格的一些規(guī)則有個(gè)詳細(xì)的認(rèn)識(shí),這樣我們后面才能詳述它的解決辦法。
效果是這樣的:
由此可此可以知道瀏覽器的默認(rèn)處理規(guī)則一:文字的前后空格都會(huì)忽略,內(nèi)部連續(xù)空格只有自作一個(gè)。
原樣輸出可能是我們這樣寫(xiě)代碼的本意,要讓這段代碼原樣輸出的方法有兩個(gè)(使用標(biāo)簽/使用表示空格的實(shí)體代碼):
方法一:<pre><span class="space"> 小鄭 搞碼 </span></pre>
方法二:<span class="space"> 小鄭 搞碼 </span>
關(guān)于規(guī)則部分還有一點(diǎn),來(lái)看一段代碼:
效果是:
表示,瀏覽器對(duì)字符的處理不僅限于空格,還有制表符(\t),換行符(\r和\n)。
同樣讓這段代碼換行可能是我們寫(xiě)的本意,讓這段代碼換行的方法有兩個(gè):
方法一:套一個(gè)pre標(biāo)簽
方法二:<span class="space">小鄭<br/>搞碼</span>
最后總結(jié)一下:
HTML語(yǔ)言的空格處理,基本上就是直接過(guò)濾。這樣的處理過(guò)于粗糙,完全忽視了原始文本內(nèi)部的空格可能是有意義的。所以CSS提供了一個(gè)屬性white-space屬性來(lái)靈活控制空格。下篇詳述。
代碼示例
java復(fù)制代碼public static String generateContent(String content) {
// 將 content 進(jìn)行 url 編碼
String ans;
try {
ans = URLEncoder.encode(content, "UTF-8");
} catch (UnsupportedEncodingException e) {
// 處理異常情況
throw new RuntimeException(e);
}
return ans;
}
java復(fù)制代碼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);
}
運(yùn)行結(jié)果:
perl復(fù)制代碼https://example.com/resource?a=%E5%B0%8F%E9%BB%91
粘貼到瀏覽器上會(huì)被瀏覽器解碼出來(lái)給用戶(hù)看到:
ini復(fù)制代碼example.com/resource?a=小黑
網(wǎng)頁(yè)截圖:
java復(fù)制代碼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);
}
運(yùn)行結(jié)果:
perl復(fù)制代碼https://example.com/resource?a=%E5%B0%8F+%E9%BB%91
粘貼到瀏覽器上會(huì)被瀏覽器解碼出來(lái)給用戶(hù)看到:
ini復(fù)制代碼https://example.com/resource?a=小+黑
網(wǎng)頁(yè)截圖:
java復(fù)制代碼public static String generateContent(String content) {
// 將 content 進(jìn)行 url 編碼
String ans;
try {
// -----------------------調(diào)整-----------------------
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);
}
運(yùn)行結(jié)果:
perl復(fù)制代碼https://example.com/resource?a=%E5%B0%8F%20%E9%BB%91
粘貼到瀏覽器上會(huì)被瀏覽器解碼出來(lái)給用戶(hù)看到:
ini復(fù)制代碼https://example.com/resource?a=小 黑
網(wǎng)頁(yè)截圖:
其中 %20 是空格經(jīng)過(guò)編碼后的結(jié)果
從上面的案例可以看到,如果 url 中有空格出現(xiàn),且不經(jīng)過(guò)特殊處理,那么將會(huì)導(dǎo)致瀏覽器無(wú)法正確解析 url,從而導(dǎo)致 url 重定向失敗,那么問(wèn)題的原因是什么呢?首先來(lái)看一下URL的組成部分
下面是一個(gè)簡(jiǎn)單的 URL 鏈接:
bash復(fù)制代碼http://localhost:8080/path/to/index.html?id=123#content
它主要有下面幾個(gè)部分組成
在 URL 編碼過(guò)程中,會(huì)遵循以下的規(guī)則:
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。