URL 百分比編碼 (Percent-encoding) 原理
統一資源定位器(URL,Uniform Resource Locator)是全球資訊網的基石。依據網際網路工程任務組(IETF)制定的 RFC 3986 規範,URL 僅允許包含特定的 ASCII 字元集合:
- 未保留字元 (Unreserved Characters):英文字母(
a-z,A-Z)、數字(0-9)、破折號(-)、底線(_)、半形句點(.)與波浪號(~)。 - 保留字元 (Reserved Characters):具備特殊語法語義的符號(例如
?代表查詢字串開始、&分隔參數、/分隔路徑等)。
任何非 ASCII 字元(如繁體中文、日語、Emoji 符號)或需要在參數值中攜帶的保留字元,都必須進行百分比編碼(Percent-encoding),即以一個百分比符號 % 後接兩個十六進位數字表示該位元組(例如 UTF-8 中文「台」編碼為 %E5%8F%B0)。
encodeURI 與 encodeURIComponent 的關鍵差異
許多工程師在處理前端跳轉或 API 請求時常混淆此兩個 API:
| 比較項目 | encodeURI | encodeURIComponent |
|---|---|---|
| 設計用途 | 編碼整個 URL 字串 | 編碼 URL 中的單一參數值 (Query Component) |
| 保留不編碼符號 | ;/?:@&=+$,# 等協議分隔符號 | 幾乎所有特殊字元皆編碼,僅保留 -_.!~*'() |
| 典型應用場景 | window.location.href = encodeURI(fullUrl) | const url = base + '?q=' + encodeURIComponent(keyword) |
| 若錯誤使用的後果 | 若用於參數,參數中的 & 或 = 不會被編碼,導致解析被截斷 | 若用於完整網址,http:// 中的 : 與 / 會被轉碼,導致網址失效 |
本工具提供「完整網址 (Full URL)」與「組件參數 (Component Mode)」兩種模式快速切換,自動套用正確的編碼策略。
常見使用場景
- REST API 參數排查:檢查後端日誌中含有
%20、%2B或中文字元的 URL 是否傳遞正確。 - 社群分享連結產出:為 Facebook Share、Twitter Intent 或 LINE 傳送連結組裝帶有中文標題與摘要的網址。
- Double Encoding 復原:修復因中介軟體或反向代理多次轉碼產生的
%25畸形網址。
操作指南
- 選擇編碼或解碼:於切換開關選擇「編碼 (Encode)」或「解碼 (Decode)」。
- 切換組件模式:勾選「組件模式」以編碼所有保留分隔符號(推薦用於處理單一參數)。
- 輸入文字或網址:在輸入框中貼上字串,工具即時完成無縫轉碼。
- 一鍵複製:點擊「複製」即可將處理完成的乾淨網址複製到剪貼簿。