使用方式
- 選擇「編碼」或「解碼」。
- 單一值(例如一個查詢參數)請選擇「元件」;完整網址請選擇「完整 URL」。
- 輸入或貼上文字。結果會立即顯示在右側(手機上則顯示於下方)。
- 複製結果,或使用「將輸出作為輸入」,反向執行操作並確認轉換結果。
運作方式
URL 只能包含有限的 ASCII 字元。其他所有字元,包括空格、重音字母和表情符號,都會以百分比跳脫序列表示:字元會先轉換成 UTF-8 位元組,再將每個位元組轉成 % 加上兩個十六進位數字。空格會變成 %20,é 會變成 %C3%A9,而 € 會變成 %E2%82%AC。
元件模式使用 JavaScript 的 encodeURIComponent 和 decodeURIComponent。它會跳脫所有在 URL 中具有特殊意義的字元,包括 / ? # & = + : 和 @,因此結果可安全地放在查詢參數值或單一路徑區段中。只有 A–Z、a–z、0–9 和 - _ . ! ~ * ' ( ) 會保持不變。
完整 URL 模式使用 encodeURI 和 decodeURI。此模式假設輸入內容已是完整 URL,並保留保留字元 ; , / ? : @ & = + $ # 不變,讓網址仍可正常使用。解碼時,decodeURI 也會保留這些保留字元的跳脫序列:%2F 會維持為 %2F,因為將它轉成 / 會改變 URL 的意義。
表單資料選項遵循 application/x-www-form-urlencoded 格式,也就是瀏覽器提交 HTML 表單時使用的格式:空格會以 + 而非 %20 表示。使用此選項解碼時,每個 + 都會變成空格;若要表示真正的加號,必須寫成 %2B。
無效輸入絕不會被捨棄。如果 % 後面沒有接兩個十六進位數字,或跳脫序列無法組成有效的 UTF-8,工具會指出問題位置並保留文字,方便您修正。
範例
將值放入查詢字串
若要在 https://example.com/search?q=… 搜尋「Rock & Roll」,請使用元件模式只編碼參數值:Rock%20%26%20Roll。若未編碼,& 會結束 q 參數,並開始一個名為「 Roll」的新參數。
修正含空格和重音字母的 URL
在完整 URL 模式中,https://example.com/menu/crème brûlée.html 會變成 https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html。斜線和冒號會保持不變,因此連結仍可正常使用。
讀取記錄中的表單資料
伺服器記錄中出現 name=Jane+Doe&city=S%C3%A3o+Paulo。開啟「將 + 視為空格」,並使用元件模式解碼,即可讀取 name=Jane Doe&city=São Paulo。
常見問題
encodeURI 和 encodeURIComponent 有什麼不同?
encodeURIComponent 會跳脫用來分隔 URL 部分的字元(/ ? # & = + : @ 等),因此適用於 URL 的單一部分。encodeURI 會保留這些字元,因此適用於完整 URL。將 encodeURI 用於查詢參數值是常見錯誤:值中的 & 或 = 不會被跳脫,導致查詢字串格式錯誤。
空格應該寫成 %20 還是 +?
在 URL 路徑中,空格一律表示為 %20。在查詢字串中,兩種表示法都可能出現:%20 在任何情況下都有效,而 + 只會在表單編碼資料(application/x-www-form-urlencoded)中代表空格;HTML 表單和許多伺服器架構會以此格式讀取查詢字串。如果不確定,請使用 %20。
為什麼解碼時會發生錯誤?
如果 % 符號後面沒有接兩個十六進位數字(例如「50% off」),或跳脫後的位元組不是有效的 UTF-8,解碼就會失敗。後者通常表示文字是以較舊的字元集(例如 Latin-1)編碼(é 寫成 %E9,而非 %C3%A9)。錯誤訊息會指出問題位置。
為什麼完整 URL 模式沒有將 %2F 轉成斜線?
decodeURI 會刻意保留 / ? # & 和 = 等保留字元的跳脫序列,因為解碼可能會改變 URL 的分段方式。若要解碼所有跳脫序列,請使用元件模式。
哪些字元永遠不會被編碼?
兩種模式都會保留 A–Z、a–z、0–9 和 - _ . ! ~ * ' ( ) 不變。完整 URL 模式還會保留 ; , / ? : @ & = + $ 和 # 不變。
隱私權
編碼和解碼完全在您的瀏覽器中透過內建的 JavaScript 函式執行。您的文字和 URL 不會上傳、儲存或納入分析資料。