免費轉換器

URL 編碼器 / 解碼器

在瀏覽器中即時編碼和解碼URL及URI元件。免費、私密,無需上傳。

關於此工具

URL 編碼(正式的百分比編碼,在 RFC 3986 中定義)將 URL 中具有特殊含義的字元(空格、斜線、與號、井號)轉換為使用百分號後跟十六進位數字的安全形式。空格字元變成 %20(或在表單編碼上下文中為 +),& 符號變為 %26,依此類推。如果沒有這種編碼,特殊字元將被解釋為 URL 語法而不是文字數據,從而破壞 URL 或導致意外行為。

存在兩種相關但不同的編碼。標準 URL 元件編碼對非保留字元集之外的所有內容使用 % 轉義:A-Z、a-z、0-9、連字符、底線、句點、波形符。表單編碼變體 (application/x-www-form-urlencoded) 另外將空格視為加號,並對其他一些字元使用不同的規則。 JavaScript的encodeURIComponent 使用嚴格的元件編碼; encodeURI 使用更寬鬆的形式來保留 URL 結構字元。

該工具提供編碼和解碼。編碼模式將每個需要轉義的字元以%HH格式包裝起來;解碼模式反轉轉換。兩者都使用內建 JavaScript URL 函數完全在瀏覽器中運行,因此不會將資料傳送到任何地方。

為什麼要對 URL 進行編碼或解碼

任何時候 URL 中包含資料——查詢字串參數、包含使用者輸入的路徑段、重定向目標——都需要正確的編碼。編碼失敗會產生在出現特殊字元時中斷的 URL,洩漏參數邊界到查詢字串(將 &x=1 變成單獨的參數),或作為格式錯誤的請求被 Web 伺服器阻止。

解碼則相反:從編碼的 URL 中提取原始資料。瀏覽器網址列通常以編碼形式顯示 URL;解碼揭示了實際意圖。日誌記錄、偵錯和安全分析都受益於顯示原始參數和路徑的解碼 URL。

使用方法

貼上字串,選擇方向。

  1. 選擇編碼或解碼: 編碼以 %HH 格式包裝不安全字元。解碼將 %HH 轉義回原義字元。
  2. 新增輸入文字: 貼上要編碼或解碼的字串。對於編碼,這通常是帶有空格、特殊字元或非 ASCII 內容的文字值。對於解碼,這是包含 %HH 轉義符的 URL 或 URL 元件。
  3. 轉換: 該工具應用encodeURIComponent 或decodeURIComponent。編碼輸出可以安全地嵌入 URL;解碼後的輸出是原始文字值。
  4. 複製或下載: 在任何需要的地方使用結果。編碼值適合 URL;解碼值揭示原始資料。

常見用例

技術細節

encodeURIComponent 對未保留集 [A-Za-z0-9-_.~] 以外的每個字元進行編碼。空格變成 %20,加號變成 %2B,等號變成 %3D,依此類推。 ASCII 以外的字元首先以 UTF-8 進行編碼,然後對每個位元組進行 % 轉義。

encodeURI 更寬鬆,適用於完整 URL 而不是元件。它不會轉義 /、?、&、=、# 和其他一些字符,因為這些字符具有 URL 語法含義。對於在 URL 中嵌入用戶數據,encodeURIComponent 幾乎總是正確的選擇。

decodeURIComponent 反轉 %-轉義符,驗證每個轉義符格式正確,且結果位元組形成有效的 UTF-8。格式錯誤的輸入會引發錯誤,而不是產生垃圾。

最佳實踐

常見問題

哪些字元需要URL編碼?
必須對保留字元(&、=、?、#、/、:、@)和不安全字元(空格、<、>、{、}、|、^、~、[、]、`)進行編碼。字母數字字元和 -_.~ 是安全的,不需要編碼。
encodeURI 和encodeURIComponent 之間有什麼區別?
encodeURI 對完整 URL 進行編碼,但保留保留字元 (://?#)。 encodeURIComponent 對 -_.!~*'() 之外的所有內容進行編碼 — 將其用於查詢參數值。該工具提供兩種模式。
URL 中的空格是如何編碼的?
空格可以編碼為 %20(標準百分比編碼)或 +(形式編碼)。 %20 對於 URL 路徑是正確的,而 + 用於 HTML 表單的查詢字串。該工具預設使用%20。
我可以對 Unicode 字元進行編碼嗎?
是的。 Unicode 字元首先編碼為 UTF-8 位元組,然後對每個位元組進行百分比編碼。例如,「日」變為 %E6%97%A5(三個 UTF-8 位元組,每個位元組進行百分比編碼)。
我應該使用encodeURI 還是encodeURIComponent?
幾乎總是對URIComponent進行編碼。只有當您有完整的 URL 並希望保留其結構時才使用encodeURI——通常很少見,因為無論如何您都是從組件構建 URL 的。
我的數據是否上傳到伺服器?
不會。 URL 編碼和解碼完全在您的瀏覽器中進行。
它可以處理 Unicode 表情符號嗎?
是的。表情符號是多位元組 UTF-8 序列;編碼器產生一系列 % 轉義字節,解碼器可以將其正確地重新組裝回原始表情符號。
如果我的輸入有看起來像 %HH 的字串但實際上並未編碼怎麼辦?
編碼將每個 % 轉換為 %25,然後對其餘部分重新套用轉義。解碼嚴格輸入會在格式錯誤的轉義上引發錯誤;看起來不明確的字串可能無法正確解碼。