跳到正文
馬克工具箱

URL 編碼解碼

把文字編碼後放進網址,把 %E4%B8%AD 這類跳脫字元串還原成可讀文字,並把任意網址拆解成各個部分和查詢引數。支援單個引數、完整網址、HTML 表單三種編碼方式。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

使用步驟

  1. 選擇「編碼」或「解碼」。
  2. 選擇模式:單個引數值用「引數值」,保留網址結構用「完整網址」,HTML 表單資料用「表單」(空格轉為 +)。
  3. 貼上文字,結果即時更新。
  4. 如果輸入的是網址,下方會列出協議、主機、路徑和各個查詢引數。

引數說明

引數值
除字母、數字和 - _ . ~ 外全部編碼,用於查詢引數的值或路徑片段。等同於 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 編碼的老網站會得到不同的結果。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具