URL 編碼是什麼?
網址只能使用有限的字元。中文、空白,以及 &、=、? 這類在網址中有特殊意義的符號,放進網址參數前必須先編碼。URL 編碼(也稱百分比編碼)會把字元轉成 UTF-8 位元組,再寫成 % 加兩位十六進位數字,例如「中」會變成 %E4%B8%AD。
如何使用
- 按「編碼」或「解碼」選擇方向,按下的按鈕會亮起。
- 在左邊輸入內容。開啟「自動轉換」時,停止輸入後會自動產生結果。
- 按「結果放回輸入」可以把結果移到左邊,並自動切換成相反方向。
空白要編成 %20 還是 +?
- %20(預設):依照網址標準 RFC 3986,適用於網址的任何位置。
- +:HTML 表單送出時使用的格式(
application/x-www-form-urlencoded)。開啟「空白使用 +」即可;解碼時也會把+當成空白。
範例
a b&c=中文 編碼後是:
a%20b%26c%3D%E4%B8%AD%E6%96%87
和 JavaScript encodeURIComponent 有什麼不同?
結果大致相同,差別是本工具依 RFC 3986 另外編碼 !、'、(、)、* 五個字元,只保留英文字母、數字和 -、_、.、~,在各種伺服器上都比較不容易出錯。
編碼範圍與網址解析
- 參數值(預設):所有特殊符號都編碼,適合放在
?q=後面的值。 - 完整網址:保留
: / ? & = #等網址結構,只編碼網址不允許的字元,例如中文、空白與[ ] |等符號。例如https://example.com/咖啡?q=拿 鐵會變成https://example.com/%E5%92%96%E5%95%A1?q=%E6%8B%BF%20%E9%90%B5。 - 解析網址:按「解析網址」會把網址拆成協定、主機、連接埠、路徑、錨點,並把每個查詢參數解碼後列成表格,重複的參數也會分別列出。查詢參數中的
+一律視為空白,與伺服器讀取的方式相同。
常見問題
可以把整個網址直接編碼嗎?
用預設的「參數值」編碼整個網址,會把 ://、?、& 也一起編碼,網址就無法使用。要處理整個網址時,請把「編碼範圍」改成「完整網址」,會保留網址結構,只編碼網址不允許的字元;單獨的參數值則用「參數值」。
解碼時顯示「不是有效的 URL 編碼字串」?
% 後面必須接兩個十六進位字元(0–9、A–F)。如果內容本身就有 %(例如 100%),代表它沒有被編碼過,不需要解碼。
結果出現 %2520 是什麼意思?
代表內容被編碼了兩次:% 本身又被編成 %25。把結果再解碼一次就能還原。