URL 編碼/解碼

對 URL 進行編碼和解碼。

URL 無效

Tips

  • 日語字元「あ」經 UTF-8 編碼後變為 %E3%81%82
  • 空格在 URL 路徑中編碼為 %20,在查詢引數中有時編碼為 +(RFC 3986 與 HTML 表單規範的差異)。
  • ?&=保留字元用於引數值時,必須進行編碼。
  • 在 REST API 查詢引數中包含非 ASCII 字元,或安全傳遞重定向 URL 時非常實用。

常見問題

編碼是將漢字、空格等非 ASCII 字元轉換為 %XX 十六進位制格式的過程,解碼則是將其還原為原始文本。瀏覽器位址列會自動對 URL 進行解碼顯示。

在 URL 路徑部分使用 %20(RFC 3986 標準);在 HTML 表單的 application/x-www-form-urlencoded 查詢字串中使用 +。如無特殊要求,推薦統一使用 %20

字母(A–Z、a–z)、數字(0–9)以及 - _ . ~ 等非保留字元無需編碼。&=?#保留字元在作為引數值使用時必須進行編碼。
ツールくん

閒話 ― URL 的誕生:Tim Berners-Lee 與全球資訊網的黎明

URL 由 Tim Berners-Lee(全球資訊網的發明者)於 1991 年設計。由於最初僅針對 ASCII 字元,多位元組字元(如日語)及特殊字元需通過百分號編碼來表示。

網際網路第一個網頁的 URL「http://info.cern.ch/hypertext/WWW/TheProject.html至今仍可訪問。表情符號域名(如 🍕.ws)在技術上可行,內部會被轉換為 Punycode(以 xn-- 開頭的格式)。URL 在理論上可超過 2,000 個字元,但實際上受瀏覽器和伺服器的限制(約 2,048 個字元)。

RFC 3986 定義了 URL 規範,但 "%20(空格)"與"+(空格)"的區別至今仍是常見混淆點。%20 是 URI 標準,+ 用於 HTML 表單的 application/x-www-form-urlencoded 格式,應根據使用場景加以區分。