整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Html中的空格

          (半角的不斷行的空白格)


            (半角的空格)


            (全角的空格)

          擊右上方紅色按鈕關注“小鄭搞碼事”,每天都能學到知識,搞懂一個問題!

          由于HTML代碼的空格通常會被瀏覽器忽略,所以我們很有必要對瀏覽器處理空格的一些規則有個詳細的認識,這樣我們后面才能詳述它的解決辦法。

          一、默認規則

          效果是這樣的:

          由此可此可以知道瀏覽器的默認處理規則一:文字的前后空格都會忽略,內部連續空格只有自作一個。

          原樣輸出可能是我們這樣寫代碼的本意,要讓這段代碼原樣輸出的方法有兩個(使用標簽/使用表示空格的實體代碼):

          方法一:<pre><span class="space"> 小鄭 搞碼 </span></pre>

          方法二:<span class="space"> 小鄭 搞碼 </span>

          二、另一個規則

          關于規則部分還有一點,來看一段代碼:

          效果是:

          表示,瀏覽器對字符的處理不僅限于空格,還有制表符(\t),換行符(\r和\n)。

          同樣讓這段代碼換行可能是我們寫的本意,讓這段代碼換行的方法有兩個:

          方法一:套一個pre標簽

          方法二:<span class="space">小鄭<br/>搞碼</span>

          最后總結一下:

          HTML語言的空格處理,基本上就是直接過濾。這樣的處理過于粗糙,完全忽視了原始文本內部的空格可能是有意義的。所以CSS提供了一個屬性white-space屬性來靈活控制空格。下篇詳述。

          頁 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

          它主要有下面幾個部分組成

          • 協議:URL 的網絡傳輸協議,如 http、https、ftp 等。表示資源訪問需使用何種協議;
          • 服務器名稱:表示要訪問的服務器主機名或 IP 地址;
          • 端口(可選):服務器使用的端口號,如 http 默認的端口是 80,https 默認的端口是443,如果省略則使用該協議的默認端口;
          • 路徑:表示服務器上具體資源的路徑信息:例如“/index.html”;
          • 查詢參數(可選):路徑后加問號開頭的查詢字符串,用于傳遞額外的參數,如”?id=123”;
          • 錨點(可選):鏈接內的超鏈接錨點定位,例如“#content”;
            • HTTP請求不包括#
            • #是用來指導瀏覽器動作的,針對瀏覽器起作用,對服務器端完全無用
            • 訪問http://www.example.com/index.html#print,瀏覽器實際發出的請求只是請求index.html,沒有"#print"部分。
            • 位于#后面的字符都是位置標識符
            • 在第一個#后面出現的任何字符,都會被瀏覽器解讀為位置標識符。 這意味著,這些字符都不會被發送到服務器端。
            • 在URL中指定一個顏色值 http://www.example.com/?color=#fff 但瀏覽器實際發出的請求是"#fff"被省略了。只有將#轉碼為%23,瀏覽器才會將其作為實義字符處理。http://example.com/?color=%23fff
            • 改變#后面的參數不會觸發頁面重載
            • 改變#后面的參數會改變瀏覽器的訪問歷史
          • 用戶名密碼(可選):用于基礎的 HTTP 認證的用戶名和密碼;

          2、URL 編碼中遵循的規則

          在 URL 編碼過程中,會遵循以下的規則:

          • 空格:替換成 + (%20)
          • /:分割目錄和子目錄
          • ?:分割 URL 和查詢
          • %:指定特殊字符
          • #:指定書簽 (%23)
          • &:指定分隔參數 (%26)
          • =:指定參數的值(%3D)

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

          • URL 作為資源定位符,它需要保證各個組成部分(協議、主機名、端口、路徑等)之間使用統一的分隔符,通常采用斜線"/"。如果直接使用空格,很難區分路徑中的空格與路徑之間的分隔;
          • 早期URL標準沒有規定如何處理空格等特殊字符,直接包含空格可能導致解析或匹配時產生歧義;
          • 例如:http://www.example.com/products/product name.html
          • 當瀏覽器在解析這個 URL 的時候,可能就會產生下面的歧義問題:
          • 1、是否應該解析為兩個路徑組件"products/product"和"name.html”
          • 2、搜索引擎或其他系統進行URL匹配檢索時,不清楚空格是否應該作為路徑分隔符來匹配; 3、攻擊者可以構造歧義URL,利用空格來規避安全機制或進行異常操作;
          • 包含空格特殊字符可能會破壞URL本身結構或導致安全問題;
          • 包含空格可能導致傳輸或存儲時產生問題。例如傳輸過程中空格是否需要編碼等問題沒有明確規定;

          主站蜘蛛池模板: 国产日韩AV免费无码一区二区三区| 中文字幕av无码一区二区三区电影 | 国产成人高清亚洲一区久久| 视频在线一区二区三区| 精品国产免费一区二区三区香蕉| 国产美女在线一区二区三区| 日本不卡一区二区视频a| 变态调教一区二区三区| 国产萌白酱在线一区二区| 精品国产一区AV天美传媒| 成人区精品一区二区不卡| 日本高清无卡码一区二区久久| 一区二区三区无码被窝影院| 国产精品区一区二区三在线播放 | 岛国无码av不卡一区二区| 国产午夜精品一区二区三区极品| 韩日午夜在线资源一区二区| 国产精品一区二区AV麻豆| 精品国产a∨无码一区二区三区| 一区二区不卡久久精品| 多人伦精品一区二区三区视频| 无码人妻久久久一区二区三区| 精品无码人妻一区二区三区不卡| 在线精品一区二区三区电影| 中文字幕AV无码一区二区三区| 久久精品国内一区二区三区 | 精品少妇人妻AV一区二区 | 亚洲色欲一区二区三区在线观看| 一区二区三区观看| 国产一区在线视频| 日韩爆乳一区二区无码| 亚洲av乱码一区二区三区| 国产精品久久久久久一区二区三区| 精品无码av一区二区三区| 鲁丝片一区二区三区免费| 国产精品伦一区二区三级视频| 一区二区视频在线| 日韩在线不卡免费视频一区| 精品亚洲A∨无码一区二区三区 | 日本免费电影一区二区| 人妻无码久久一区二区三区免费|