0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
設定
編碼和解碼文字串以安全地用於 URL。組件 會編碼所有的預留字元,非常適合用於 query 的參數值。完整 URL 會保留 URL 的結構(方案、橫線、問號)。使用 + 表示 HTML 表單中的空格(application/x-www-form-urlencoded)。
運作方式
URL 編碼(百分號編碼)將無法在位址中直接出現的字元替換為帶有其位元組值的 %XX 序列。例如,空格變成 %20。
「元件」範圍還會轉義保留字元(= & / ? #):用於參數的值。「完整 URL」會保留位址結構:用於整個 URL。
在 HTML 表單中,空格被編碼為 +(application/x-www-form-urlencoded);在其他情況下,按照 RFC 3986 標準使用 %20。
範例
hola mundo & máshola%20mundo%20%26%20m%C3%A1s“&”會被轉義(%26),以免與參數分隔符混淆;“á”按 UTF-8 編碼(%C3%A1)。a=1&b=2a%3D1%26b%3D2https://sitio.com/á b?x=1 2URL completa: https://sitio.com/%C3%A1%20b?x=1%202在「完整 URL」模式下,://、/ 和 ? 會被保留;只有會破壞位址的字元才會被轉義。使用情境
- 手動建構 URL 時安全地組裝查詢參數。
- 在透過 GET 請求傳送之前,對包含 &、=、空格或重音符號的值進行編碼。
- 解碼 URL 以讀取每個參數攜帶的值。
- 為表單提交準備 application/x-www-form-urlencoded 主體。
常見問題
「元件」和「完整 URL」有什麼區別?
「元件」(encodeURIComponent)還會轉義 =、&、/、?、# —— 用於單個值。「完整 URL」(encodeURI)會保留這些結構字元 —— 用於整個 URL。
空格何時用 +,何時用 %20?
+ 只適用於表單主體(application/x-www-form-urlencoded)。在 URL 的其餘部分,空格的標準是 %20。
為什麼“á”變成 %C3%A1 而不是單個 %XX?
因為它按 UTF-8 編碼:非 ASCII 字元占用多個位元組,每個位元組用各自的 %XX 序列表示。
對 URL 進行編碼會使其安全嗎?
不會。它只是在語法層面使其有效。這不是加密,也不會以任何方式保護內容。