URL 編碼/解碼
對 URL 進行編碼和解碼。
URL 無效
URL 編碼・解碼是什麼
URL 編碼(百分號編碼)是指將無法納入 URL 的中文或符號,轉換為「%XX」形式 ASCII 字串的機制。URL 原本即以僅含 ASCII 字元為前提所設計,因此在將中文這類多位元組字元,或「?」「&」等保留字元作為參數值傳遞時,此轉換即為必要。
本工具可將所輸入的 URL 或字串一鍵編碼・解碼,轉換結果亦可直接複製使用。可運用於 API 請求的組建、轉址 URL 的產生、確認自其他系統接收之已編碼 URL 的內容等開發作業的各種場合。
使用方式
- 輸入欲轉換的字串 將含中文的文字,或已編碼的 URL 貼入輸入欄。
- 選擇編碼或解碼 欲將一般字串轉為%表記則選編碼,欲將%表記還原則選解碼。
- 確認轉換結果 轉換後的字串會即時顯示。
- 複製結果加以利用 可直接貼入 API 請求的查詢參數或轉址 URL 中使用。
用好本工具的小技巧
- 日語字元「あ」經 UTF-8 編碼後變為
%E3%81%82。 - 空格在 URL 路徑中編碼為
%20,在查詢引數中有時編碼為+(RFC 3986 與 HTML 表單規範的差異)。 - 將
?、&、=等保留字元用於引數值時,必須進行編碼。 - 在 REST API 查詢引數中包含非 ASCII 字元,或安全傳遞重定向 URL 時非常實用。
活用場景
建立 REST API 的查詢參數
想將中文關鍵字或自由輸入值安全納入 API 查詢字串時使用。
組建轉址 URL
將表示目的地的 URL 作為參數嵌入另一 URL 時,可藉編碼防止與分隔字元衝突。
確認自其他系統接收之 URL 的內容
可將日誌或外部服務傳來、滿是%表記的 URL 解碼,讀取實際的參數值。
建立郵件內文・社群分享用連結
可將中文文字安全納入含主旨與內文的 mailto 連結,或社群分享用 URL。
用語集
- 百分號編碼
- 指將字元轉換為 UTF-8 位元組序列,再以「%」+16進位2位數表示各位元組的方式。可安全表現 URL 中無法使用的字元。
- 保留字元
- 指「?」「&」「=」「#」「+」等用於區隔 URL 結構的符號。納入參數值時須予以編碼。
- 非保留字元
- 指英數字與「-」「_」「.」「~」四個符號。RFC 3986 明定其無須編碼。
- RFC 3986
- 指訂定 URI 語法的網際網路標準規格。百分號編碼的規則亦於此處定義。
- application/x-www-form-urlencoded
- 指 HTML 表單送出時所用的編碼格式。與 URI 標準不同之處在於將空白轉換為+而非%20。
常見問題
%XX 十六進位制格式的過程,解碼則是將其還原為原始文本。瀏覽器位址列會自動對 URL 進行解碼顯示。%20(RFC 3986 標準);在 HTML 表單的 application/x-www-form-urlencoded 查詢字串中使用 +。如無特殊要求,推薦統一使用 %20。- _ . ~ 等非保留字元無需編碼。&、=、?、# 等保留字元在作為引數值使用時必須進行編碼。
閒話 ― 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 格式,應根據使用場景加以區分。