跳至主要內容
FreeOnlineTools Go
繁體中文
解釋

什麼是 URL 編碼?百分比編碼的完整說明

作者:FreeOnlineTools Team · 更新日期:2026-09-02

快速解答

URL 編碼(百分比編碼)將 URL 中的不安全字元替換為 % 後面接著兩個十六進位數字。例如,空格變成%20,& 變成%26。它確保 URLs 可以毫無歧義地傳輸。使用我們免費的 URL 編碼器和解碼器在瀏覽器中進行轉換。

介紹

URL 編碼,也稱為百分比編碼,是一種在 URL 中對特殊字元進行編碼的機制,以便它們可以安全地透過網路傳輸。 URLs 只能包含一組有限的 ASCII 字元 — 字母、數字和一些保留字元。任何其他字元(空格、引號、非 ASCII 字母)必須編碼為百分號 (%),後面跟著表示字元位元組值的兩個十六進位數字。 URL 編碼由 RFC 3986 定義。

步步

  1. 了解哪些字元需要編碼

    非保留字元(A-Z、a-z、0-9、-、_、.、~)不需要編碼。保留字元 (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) 在 URLs 中具有特殊意義,在用作資料時應進行編碼。所有其他字元(空格、引號、非 ASCII)都必須進行編碼。

  2. 了解編碼機制

    每個需要編碼的字元都會轉換為其 UTF-8 位元組序列,然後每個位元組表示為 %XX,其中 XX 是十六進位值。空格 (0x20) → %20。非 ASCII 字元“é”(UTF-8:0xC3 0xA9)→ %C3%A9。

  3. 區分encodeURI 和encodeURIComponent

    encodeURI() 對完整的 URL 進行編碼,但保留作為 URL 結構一部分的保留字元 (:/?&=)。 encodeURIComponent() 對除非保留字元之外的所有內容進行編碼 - 將其用於查詢參數值,其中保留字元是數據,而不是結構。

  4. 解碼百分比編碼的 URLs

    解碼與編碼相反:%20 → 空格,%C3%A9 → é。使用decodeURI() 取得完整的URLs,使用decodeURIComponent() 取得查詢參數值。無效的轉義序列(如 %ZZ)會引發錯誤。

範例

編碼一個空格

輸入: hello world

輸出: hello%20world

對非 ASCII 文字進行編碼

輸入: café

輸出: caf%C3%A9

對查詢參數值進行編碼

輸入: name=John Doe & Co.

輸出: name%3DJohn%20Doe%20%26%20Co.

常見問題

  • 當只有值需要編碼時,對整個 URL 進行編碼 — 編碼查詢參數值,而不是 URL 結構 (://?&=)。
  • 雙重編碼 - 如果 URL 已經編碼,則再次編碼會產生 %2520 而不是 %20。如果不確定是否已經編碼,請先解碼。
  • 錯誤地使用encodeURI 與encodeURIComponent —encodeURI 保留 URL 結構字元; encodeURIComponent 對它們進行編碼。使用後者作為查詢參數值。
  • 無效的轉義序列 —%ZZ 或末尾的單一 % 無效,並且在解碼時會拋出錯誤。

提示

  • 請務必對可能包含空格、特殊字元或使用者輸入的查詢參數值進行編碼,以防止 URL 注入。
  • 對查詢參數值使用encodeURIComponent(),對只需要編碼不安全字元的完整URLs使用encodeURI()。
  • URL 編碼不是加密-任何人都可以解碼它。切勿使用它來隱藏敏感資料。
  • 使用我們的 URL 編碼器和解碼器在瀏覽器中進行即時、私密的轉換。

相關工具

相關指南

參考