§

輸入要解碼的文字:

輸入您要解碼的URL編碼文字。該工具會將百分比編碼的字元轉換回原始形式。
§

Output

decoded

在台灣行銷分析的場域中,工程師常需解出 Google Analytics 4 的 utm_campaign 參數——含中文活動名稱經百分號編碼後,需還原為可讀字串才能匯入 Looker Studio 報表。蝦皮 Open Webhook 推送的訂單事件、momo購物網對接物流的 redirect URI、以及 Cloudflare WAF 日誌中的攻擊樣本,皆需精準解碼以判讀 SQL injection 或 XSS 載荷。處理 OAuth2 state 參數時(如台灣大哥大或玉山銀行開放銀行),解碼結果必須對應到 session,符合金管會與個資法的稽核要求。

進階選項

將 + 轉換為空格

啟用後,+ 字元將被轉換為空格。這在解碼查詢參數時非常有用。

即時模式

啟用後,文字將在您輸入時自動解碼。

這些選項幫助您控制URL中編碼字元的解碼方式。

什麼是 URL 解碼?

URL 解碼是 百分號編碼 的逆運算:讀取已編碼 URL 中的 %XX 轉義序列,並還原為對應的字元。如此一來,你就能從瀏覽器、API 或日誌行以編碼形式傳來的 URL 中,重新取得可讀的查詢字串、表單值或路徑段。

URL 解碼是如何運作的?

URL 解碼遵循特定的流程,將百分號編碼的序列還原為其原始字元:

  1. 掃描輸入字串中的百分號編碼跳脫序列(%XX)
  2. 將每個 %XX 從其兩位十六進位數字轉換回原始位元組值
  3. 連續解碼的位元組被重新組合成 UTF-8 字元(多位元組序列變為一個字元)
  4. 在查詢字串上下文中,+ 解碼為空格(application/x-www-form-urlencoded),而 %2B 保留為字面量 +
  5. 非保留字元和已解碼的文字原樣通過,不作更改

為什麼使用 URL 解碼器?

  • 可讀輸出:將 %20、%40、%3D 還原為空格、@ 和 =,讓你讀懂 URL 真正的意思
  • 多語言文字:從 UTF-8 位元組序列重建帶有腔調的字元及非 ASCII 字元,讓 %C3%A9 再次顯示為 é
  • 除錯:在對查詢字串、OAuth 重導向或 webhook 負載採取行動之前,先確認其中的實際值
  • 標準相容:依照 RFC 3986 解碼——與瀏覽器和伺服器使用的規則相同——以確保看到的結果完全一致

URL 解碼有哪些常見應用?

URL 解碼在許多 Web 開發場景中不可或缺:

  • 表單提交:從 application/x-www-form-urlencoded 的 GET 與 POST 資料中還原原始欄位值
  • API 開發:展開到達 API 端點的百分號編碼路徑與查詢參數
  • 檔案系統:還原為了在 URL 中傳輸而百分號編碼過的檔案路徑與名稱
  • 連結除錯:解碼已分享或已記錄的 URL,查看其中包含的特殊字元與多語言文字

URL 解碼範例是什麼樣子?

以下是 URL 解碼的常見範例:%20(或 +)還原為空格,%40 還原為 @,%23 還原為 #,%26 還原為 &,%3D 還原為 =。UTF-8 序列如 %C3%A9 則還原為國際字元 é。

什麼是百分號編碼?

百分號編碼是 RFC 3986 §2.1 所定義的機制,用於在 URI 內部表示不安全或保留的字元。規則是機械式的:每個不能逐字出現的位元組都被寫成一個百分號後接兩個十六進位數字——%XX 形式——其中 XX 是該位元組的值。é 這類非 ASCII 字元會先被編碼為其 UTF-8 位元組序列,然後每個位元組再分別進行百分號編碼。開發者幾乎每天都會遇到它:在查詢字串、表單提交、OAuth 回呼 URL、REST API 路徑參數,以及任何 URL 需要承載標點、空白或不在非保留集合 A–Z a–z 0–9 - _ . ~ 中字元的情境裡。

把 %C3%A9 解碼為 é 究竟是怎麼運作的?

以編碼後的查詢字串 ?q=caf%C3%A9&lang=fr 為例。解碼會得到 ?q=café&lang=fr。以下是逐位元組的說明:

  • 輸入: ?q=caf%C3%A9&lang=fr
  • 輸出: ?q=café&lang=fr
  1. %C3 → 位元組 0xC3(二進位 11000011)——一個 2 位元組 UTF-8 序列的首位元組。
  2. %A9 → 位元組 0xA9(二進位 10101001)——續位元組。合在一起,C3 A9 就是 U+00E9 的 UTF-8 編碼,也就是 é
  3. 字元 ?=& 不會被更動,因為它們是結構性的——它們劃分了查詢及其鍵/值對。字面值 caf 也原樣通過,因為小寫 ASCII 字母屬於非保留集合。

decodeURIComponent 與 decodeURI 有什麼不同?

JavaScript 提供兩個內建解碼函式,搞混它們是 URL 處理中最常見的 bug 之一:

  • decodeURIComponent(str) 會解碼每一個百分號編碼序列,包含 &=?/# 等保留字元。請用它處理單獨的查詢字串或路徑片段——千萬不要套在整個 URL 上。
  • decodeURI(str) 是刻意保守的:它會跳過保留字元。把 %26 餵給它會得到字面字串 %26,而不是 &。它是為了讓整段 URI 在往返中結構能存活而設計的。

經驗法則:如果字串只是 URL 的一個片段(單一參數、片段識別字、編碼過的檔名),就改用 decodeURIComponent。本工具的行為等同 decodeURIComponent——輸入中的每一個 %XX 序列都會被解碼,包含保留字元。

解碼 URL 就是讀懂它實際內容的方式。在上方貼入編碼字串,每個 %XX 序列便立即在瀏覽器中還原為對應字元,讓你不用傳送任何資料到伺服器,就能除錯查詢參數、確認 OAuth 重導向,或復原帶有腔調的檔案名稱。