URL編碼解碼器 - 編碼URL與查詢字串
為URL與查詢字串進行百分比編碼,或將編碼後的URL解碼成可讀文字——全程在瀏覽器中完成。
選擇模式、貼上文字並點擊轉換。元件編碼適合查詢字串值,完整URL編碼可保持整個位址有效,解碼則還原任何百分比編碼字串。
URL編碼解碼器 - 編碼URL與查詢字串
為URL與查詢字串進行百分比編碼,或將編碼後的URL解碼成可讀文字——全程在瀏覽器中完成。
編碼每個保留字元,包括& = ? /與#。用於查詢字串中的單一值或路徑區段。
運作方式:非保留字元集之外的字元會替換為以%XX十六進位對表示的UTF-8位元組;元件編碼使用encodeURIComponent,完整URL編碼使用encodeURI,解碼使用decodeURIComponent。
關於URL編碼器與解碼器
URL只能安全傳輸有限的字元集。每個網址背後的規範RFC 3986定義了小型非保留字元集——字母、數字及四個符號- _ . ~——可出現在任何位置;也定義了具有結構意義的保留字元集,如? & = /與#。其他所有字元,從普通空格到重音字母或中日韓字元,都必須進行百分比編碼:字元會轉成UTF-8位元組,每個位元組寫成百分比符號後接兩位十六進位數字。這個URL編碼器與解碼器可即時雙向轉換,且完全在瀏覽器內執行,因此你貼上的內容不會傳送到伺服器。
工具提供三種模式,因為JavaScript本身區分兩種編碼工作。元件編碼包裝encodeURIComponent,會轉義每個保留字元。當你建立URL的一部分——搜尋詞、重新導向目標、權杖,或查詢字串等號後的任何值——應使用它。如果值包含&或=,直接保留會把參數拆開;編碼後可保持值完整。
完整URL編碼包裝encodeURI,適用於已具結構的完整位址。它會轉義空格、引號、角括號與非ASCII字元,但刻意保留: / ? & = #,讓通訊協定、主機、路徑與查詢維持原有意義。若對整個URL使用元件編碼器,斜線與問號也會被轉義,位址結構將失效。
解碼以decodeURIComponent反向處理,把%20還原為空格、%26還原為與號,並將%C3%BC等多位元組序列還原為字母ü。解碼是閱讀長追蹤連結、檢查OAuth重新導向,或偵錯表單實際提交內容的最快方式。如果輸入包含未跟隨兩位十六進位數字的孤立%,工具會回報清楚錯誤,而不是返回亂碼。
常見用途包括準備API呼叫的查詢參數、修復含空格的失效連結、將URL嵌入其他URL,以及理清多層巢狀重新導向鏈。請注意:百分比編碼是傳輸語法,不是安全機制。編碼字串可以輕易還原,絕不能視為隱藏內容,且始終要在伺服器端驗證解碼後的輸入。
URL編碼範例
了解三種模式如何處理保留字元、空格與非ASCII文字。
| 輸入 | 輸出 | 說明 |
|---|---|---|
| price=1+2(元件編碼) | price%3D1%2B2 | =與+在查詢字串中屬於保留字元,因此元件編碼器會將它們轉為%3D與%2B。 |
| https://example.com/my files/report 2024.pdf(完整URL編碼) | https://example.com/my%20files/report%202024.pdf | 空格變成%20,而通訊協定與斜線保持不變。 |
| na%C3%AFve(解碼) | naïve | 兩位元組UTF-8序列%C3%AF會解碼回單一字母ï。 |
| 50% off(元件編碼) | 50%25%20off | 字面百分比符號本身必須編碼為%25,否則解碼器會誤讀後續內容。 |
如何編碼或解碼URL
- 選擇模式:單一值使用元件編碼,完整位址使用完整URL編碼,或選擇解碼來還原編碼。
- 將文字或URL貼到輸入框。
- 點擊轉換——結果會立即顯示在輸出框。
- 將輸出複製到需要的位置,或點擊清除重新開始。
URL編碼器與解碼器常見問題
encodeURIComponent和encodeURI有什麼差別?
encodeURIComponent會轉義每個保留字元,包括/ ? & =與#,因此用於查詢參數等單一值。encodeURI會保留這些結構字元,只轉義任何位置都不安全的字元,因此用於完整URL。工具中的元件編碼與完整URL編碼分別對應這兩個函式。
為什麼空格會變成%20而不是+?
%20是URL中空格的標準百分比編碼。+來自較早的application/x-www-form-urlencoded格式,用於HTML表單,且只適用於查詢字串。本工具一律輸出%20;解碼時+會保留為字面加號,因此解碼表單資料前請先將+替換為%20。
為什麼解碼時會出錯?
遇到後面沒有兩個有效十六進位數字的%,decodeURIComponent會拋出錯誤,例如折扣文字中的字面百分比符號,或在序列中途被截斷的字串。解碼前請確認輸入確實經過百分比編碼且內容完整。
重音符號、中日韓文字或表情等非ASCII字元如何編碼?
字元首先轉換為UTF-8位元組序列,然後每個位元組寫成%XX。帶重音字母通常變成兩組轉義序列,表情則變成四組。解碼會重新組合位元組並按UTF-8解讀,準確恢復原字元。
應該用元件編碼來編碼整個URL嗎?
不應該。元件編碼器會轉義構成URL結構的冒號、斜線與問號,破壞位址。完整URL請使用完整URL編碼,元件編碼只用於插入其中的單一值。
我貼上的內容會傳送到伺服器嗎?
不會。轉換完全在瀏覽器中執行,使用JavaScript內建的encodeURIComponent、encodeURI與decodeURIComponent函式,因此包含權杖、工作階段ID或私密路徑的URL不會離開你的裝置。