URL 編碼/解碼器
免費線上 URL 編碼與解碼:把 %E4%BD%A0%E5%A5%BD 這種編碼轉回中文,重複編碼一次解到底、認得 Big5 舊網址,網址參數自動拆成表格。
網址裡看到 %E4%B8%AD%E6%96%87 這種一長串,貼進來按「解碼」就變回「中文」;反過來要把中文、空格、& 放進網址,選好範圍按「編碼」。被編碼兩次的會一次解到底,台灣舊網站的 Big5 網址也認得,有參數的網址還會自動拆成表格。全部在瀏覽器處理,不上傳。
為什麼網址會變成 %XX
網址只能用英文字母、數字與少數符號。中文、空格或有特殊意義的符號要放進網址時,瀏覽器會先把它轉成 UTF-8 位元組,每個位元組寫成「% 加兩位十六進位數字」,這叫百分比編碼(URL 編碼)。一個中文字在 UTF-8 是 3 個位元組,所以會變成 9 個字元。
| 原本 | 參數值模式(encodeURIComponent) | 整個網址模式(encodeURI) |
|---|---|---|
| 中 | %E4%B8%AD | %E4%B8%AD |
| 空格 | %20 | %20 |
| & | %26 | &(保留) |
| / | %2F | /(保留) |
| ? | %3F | ?(保留) |
| # | %23 | #(保留) |
| % | %25 | %25 |
英文字母、數字與 - _ . ! ~ * ' ( ) 兩種模式都不會編碼。
兩種編碼範圍怎麼選
- 網址參數值:要放進 ?q= 後面的值用這個。& ? = / # 都會被編碼,才不會被當成網址結構——例如搜尋「A&B」要寫成 A%26B,不然 & 會被當成下一個參數的開始。
- 整個網址:手上是一條含中文的完整網址,要變成可以貼進信件或程式的連結,用這個。它保留 : / ? # & = 等結構符號,只編中文與空格。
把整個網址用參數值模式編碼,https:// 會變成 https%3A%2F%2F,網址就不能用了;反過來,參數值用整個網址模式編碼,裡面的 & 不會被編,參數會被切斷。
解碼遇到的三種怪情況
- 被編碼了兩次:% 本身又被編成 %25,看到 %25E4%25B8%25AD 這種就是。勾選「一次解到底」(預設開啟)會一路解到不能再解為止(最多 5 層),並告訴你編了幾次;想一層一層看就取消勾選,用「放回輸入」再解一次。
- 台灣舊網站的 Big5 網址:有些舊的 ASP 網站、論壇用 Big5 編碼,「中文」會是 %A4%A4%A4%E5,用 UTF-8 解不開。工具會自動改用 Big5 試解,解得出來就顯示給你。
- + 號:表單送出的網址用 + 代表空格(例如 ?q=hello+world)。一般解碼只把 %20 當空格,這種情況勾「把 + 當成空格」。
三種情況的例子
%25E4%25B8%25AD
→ 解一次:%E4%B8%AD
→ 再解一次:中
%A4%A4%A4%E5
→ UTF-8 解不開,改用 Big5:中文
hello+world
→ 勾「+ 當空格」:hello world
網址參數表與一次處理很多行
貼上帶參數的網址(例如從廣告後台或信件複製的追蹤連結),下方會自動列出每個參數與解碼後的值,utm_source、utm_campaign 這些一眼就看得到;網址裡 # 之後的片段也會另外標出來,它只在瀏覽器裡使用,不會送到伺服器。
勾「每一行分開處理」,一次貼一整排網址或關鍵字,每一行各自編碼或解碼,換行會保留;某一行格式有錯,會告訴你是第幾行。按過一次編碼或解碼之後,再修改輸入或選項都會自動重算。
URL 編碼/解碼器功能特點
- 解碼:%E4%B8%AD 這類百分比編碼轉回中文與符號
- 編碼:中文、空格、& ? = 等轉成網址可用格式
- 可選「整個網址」模式:保留 : / ? # & = 網址結構,只編中文與空格
- 解碼可把表單格式的 + 當成空格
- 被編碼好幾次的(%25E4…)一次解到底,並告訴你編了幾次
- UTF-8 解不開時試 Big5,台灣舊網站的網址也能還原
- 網址參數自動拆成表格,值已解碼
- 可每一行分開處理,一次貼很多網址
- 按過編碼或解碼後,修改輸入會自動重算;結果可一鍵放回輸入
- 結果與 JavaScript 的 encodeURIComponent/encodeURI/decodeURIComponent 一致
- 格式錯誤時指出是哪一段壞了,不會整頁壞掉
- 在瀏覽器處理,不上傳
如何使用URL 編碼/解碼器?
- 貼上要處理的網址或文字(有參數的網址會自動列出參數表)
- 選編碼範圍:只編參數值,或整個網址
- 要把 %XX 變回中文按「解碼」;要轉成網址格式按「編碼」
- 複製結果,或按「放回輸入」再轉一次
URL 編碼/解碼器常見問題
網址複製出來變成 %E4%B8%AD 一長串,怎麼變回中文?
那是 URL 編碼(百分比編碼):瀏覽器把中文轉成 UTF-8 位元組,每個位元組寫成 %XX。把整串貼到這裡按「解碼」就會變回中文,例如 %E4%B8%AD%E6%96%87 會變成「中文」。
什麼時候需要 URL 編碼?
網址的參數值裡有中文、空格或 & ? = # / 這類有特殊意義的符號時,要先編碼,否則網址會被截斷或誤解。例如搜尋字「A&B」要寫成 A%26B,否則 & 會被當成下一個參數的開始。
「網址參數值」和「整個網址」兩種編碼差在哪?
參數值模式(encodeURIComponent)連 : / ? & = # 都會編碼,適合放進 ?q= 後面的值;整個網址模式(encodeURI)保留這些網址結構符號,只編中文、空格等,適合把含中文的完整網址轉成可用的連結。把整個網址用參數值模式編碼,https:// 會變成 https%3A%2F%2F,網址就不能用了。
解碼後「+」號沒有變成空格?
預設用 decodeURIComponent,只把 %20 解成空格。表單送出的查詢字串(application/x-www-form-urlencoded)會用 + 代表空格,這種情況請勾選「把 + 當成空格」再解碼。
解碼時出現錯誤是什麼原因?
通常是編碼不完整,例如網址被截斷只剩 %E4%B8 半個字,或文字裡本來就有單獨的 % 符號(要寫成 %25)。本工具會指出是哪一段出錯。
URL 編碼跟 Base64 一樣嗎?
不一樣。URL 編碼只把網址不能用的字元換成 %XX,其他字元照原樣,所以還看得出原本的英文;Base64 是把整段資料換成另一套 64 個字元,完全看不出原文。要處理 Base64 請用站上的 Base64 編碼解碼工具。
網址參數裡的中文要編碼嗎?現在的瀏覽器不是會自動處理?
在網址列直接打中文,瀏覽器會自動編碼後送出;但在程式裡組網址、寫進 HTML 連結或寄信時,要自己先編碼,不然有些系統會截斷或變成亂碼。放在參數值裡的一律用「網址參數值」模式。