使用步驟
- 選擇「編碼」或「解碼」。
- 選擇模式:單個引數值用「引數值」,保留網址結構用「完整網址」,HTML 表單資料用「表單」(空格轉為 +)。
- 貼上文字,結果即時更新。
- 如果輸入的是網址,下方會列出協議、主機、路徑和各個查詢引數。
引數說明
- 引數值
- 除字母、數字和 - _ . ~ 外全部編碼,用於查詢引數的值或路徑片段。等同於 encodeURIComponent,並額外編碼 RFC 3986 保留的 ! ' ( ) *。
- 完整網址
- 保留構成網址結構的字元(: / ? # & =),只編碼空格和非 ASCII 字元。等同於 JavaScript 的 encodeURI。
- 表單
- application/x-www-form-urlencoded 格式,HTML 表單提交時使用。空格編碼為 + 而不是 %20;解碼時 + 還原為空格。
示例
| 輸入 | 引數值 | 完整網址 | 表單 |
|---|---|---|---|
a b&c |
a%20b%26c |
a%20b&c |
a+b%26c |
中文 |
%E4%B8%AD%E6%96%87 |
%E4%B8%AD%E6%96%87 |
%E4%B8%AD%E6%96%87 |
https://x.com/?q=1 2 |
https%3A%2F%2Fx.com%2F%3Fq%3D1%202 |
https://x.com/?q=1%202 |
https%3A%2F%2Fx.com%2F%3Fq%3D1+2 |
拼接帶引數的網址
把使用者輸入放進查詢字串時,要對每個值單獨編碼:
const url = `https://example.com/search?q=${encodeURIComponent(query)}&page=2`;
如果最後才對整個網址編碼,值裡面的 & 和 = 不會被編碼,引數就會被拆錯。
常見問題
%20 和 + 有什麼區別?
兩者都可以表示空格,但適用位置不同。%20 在網址任何位置都有效;+ 只在表單提交的查詢字串裡表示空格,在路徑中就是加號本身。
為什麼出現 %2520 這種重複編碼?
內容被編碼了兩次,%20 裡的 % 又被編碼成了 %25。解碼兩次即可還原;程式碼裡要確保只有一處對引數做編碼。
encodeURI 和 encodeURIComponent 該用哪個?
往網址裡拼接每個引數值時用 encodeURIComponent(「引數值」模式);只有對一個可能含空格或中文的完整網址編碼時才用 encodeURI(「完整網址」模式)。
提示「百分號編碼不完整或不正確」是什麼意思?
某個 % 後面不是兩位十六進位制數字,或者解出的位元組不是合法的 UTF-8。提示中會給出第一個出錯的位置。
中文在網址裡是怎麼編碼的?
每個漢字先轉成 UTF-8 位元組,每個位元組寫成 %XX,所以「中」會變成 %E4%B8%AD。GBK 編碼的老網站會得到不同的結果。
隱私說明
本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。