在純文字、URL 編碼與組件編碼之間自由轉換
三個步驟就能完成轉換:
在以下情境中,URL 編碼器能大幅加速工作流程:
對 HTML 表單送出的 POST/GET 參數進行編碼或解碼(application/x-www-form-urlencoded),方便檢查,空白會被轉成「+」。
把搜尋關鍵字或過濾條件轉成安全的查詢參數,例如「Tokyo Tower」→「Tokyo%20Tower」。
將 REST API Endpoint 的路徑或參數值編碼成 RFC 3986 相容的格式。採用組件編碼時,空白會變成「%20」,斜線和冒號會妥善保留。
解碼瀏覽器位址列或存取紀錄中的編碼 URL,以檢視原始字串,幫助找出錯誤並分析 log。
對 OAuth 2.0 的 redirect_uri、state 等參數進行編碼/解碼,方便在驗證流程中確認傳遞的值。
URL 編碼(percent-encoding)會使用「%」加上十六進位數字來表示 URL 中不能直接出現的字元,傳送中文、日文等多位元字元或特殊符號時必不可少。
送出 HTML 表單時使用表單編碼;處理 REST API 路徑或查詢參數時推薦組件編碼。如無法判定,以組件編碼最安全。
是的,兩者指的都是使用「%」來表示位元組的那套機制。
主要差異在空白處理與需編碼的字元集合:表單編碼把空白變「+」,組件編碼變「%20」,並會編碼更多字元。
首先轉成 UTF-8 位元組,再把每個位元組寫成「%XX」。例如「你」 → 「%E4%BD%A0」。
除字母、數字、連字號、底線、句點與 ~ 以外的大部分字元都需編碼,包括空白、斜線、冒號、非 ASCII 字元及各種符號。
常見原因是格式錯誤(如 % 後面不是兩位十六進位)或同一個字串被重複編碼,需要多次解碼。
不算,它只是格式轉換,任何人都能解碼,無法用來保護機密資料。
多數語言都有現成函式:JavaScript encodeURIComponent()、Python urllib.parse.quote()、PHP rawurlencode()、Java URLEncoder.encode() 等。
指對已經編碼過的內容再次編碼,例如「%20」→「%2520」,通常會造成錯誤,应避免發生。
Encode and decode Base64
Encode and decode HTML special characters
Encode and decode URLs
Decode encoded URLs
Encode URLs to safe format