什麼是URL 編碼解碼?
網址只能使用英數字和部分符號,所以中文或空白必須轉成百分比編碼(例如:中 → %E4%B8%AD)。網址列上看起來是中文的網址,複製出來卻變成 %E5%8F%B0… 一長串,就是這個原因。
這個工具同時支援 JavaScript 的 encodeURIComponent 和 encodeURI,遇到錯誤的 % 寫法時會告訴你是第幾個字元出了問題。
使用方法
- 選擇編碼或解碼。
- 只轉換一個搜尋詞或參數值時選值(Component),轉換整個網址時選完整網址(URI)。
- 輸入後結果會立即顯示。按⇅ 把結果當輸入可以反向再轉換一次。
- 在下方網址解析貼上網址,就能分別看到通訊協定、主機、路徑和查詢參數。
encodeURIComponent 與 encodeURI 的差別
| 字元 | encodeURIComponent | encodeURI |
|---|---|---|
| 中文、空白 | 編碼 | 編碼 |
| : / ? # & = + , ; @ $ | 編碼 | 保留 |
| A-Z a-z 0-9 - _ . ! ~ * ' ( ) | 保留 | 保留 |
查詢值中含有 & 或 = 時,用 encodeURI 會讓參數被切錯。參數值一律使用 Component 方式。
空白是 %20 還是 +?
依網址標準(RFC 3986),空白是 %20。不過 HTML 表單送出格式(application/x-www-form-urlencoded)會把空白寫成 +,像 Google 搜尋網址的 q=台北+美食 就是一例。解碼這類網址時請開啟+ 轉成空白。
常見問題
解碼時出現「無法解讀成 UTF-8 文字」。
有些較舊的網站以 Big5 編碼中文,一個字會像 %A4%A4 這樣用 2 個位元組表示。這個工具和現行瀏覽器標準都是 UTF-8,因此無法解讀 Big5 網址。
網址被編碼兩次會怎樣?
% 會變成 %25,出現 %25E4%25B8… 這樣的結果。看到很多 %25 就是被重複編碼了,請解碼兩次。
中文網域也會被編碼嗎?
網域不是用百分比編碼,而是轉成 Punycode(以 xn-- 開頭)。例如「台灣.tw」會變成 xn--kpry57d.tw,網址解析中也會這樣顯示。