URL 編碼 / 解碼
新對文字進行百分號編碼或解碼,並解析查詢字串,全程在瀏覽器中完成。
Special characters reference
| Character | Encoded (%XX) | Notes |
|---|---|---|
| space | %20 | Also encoded as + in HTML form query strings |
| & | %26 | Query param separator — encode in values |
| = | %3D | Key-value separator in query strings |
| ? | %3F | Marks the start of a query string |
| # | %23 | Fragment identifier |
| / | %2F | Path separator |
| : | %3A | Protocol / port separator |
| @ | %40 | Username delimiter in URLs |
| + | %2B | Literal plus sign (+ in query string = space) |
| % | %25 | Percent itself — encode to avoid ambiguity |
| € | %E2%82%AC | UTF-8 multi-byte (3 bytes) |
| © | %C2%A9 | UTF-8 multi-byte (2 bytes) |
Per-language code snippets
Copy-ready snippets for JavaScript, Python, C#, PowerShell, Java and Go.
// Encode a single query value (recommended)
const encoded = encodeURIComponent('hello world & co.');
// → 'hello%20world%20%26%20co.'
// Decode
const decoded = decodeURIComponent('hello%20world%20%26%20co.');
// → 'hello world & co.'
// Encode a full URL (leaves : / ? & # intact)
const safeUrl = encodeURI('https://example.com/search?q=hello world');
// → 'https://example.com/search?q=hello%20world' from urllib.parse import quote, unquote, urlencode
# Encode a single value (%20 for spaces)
encoded = quote('hello world & co.')
# → 'hello%20world%20%26%20co.'
# Decode
decoded = unquote('hello%20world%20%26%20co.')
# → 'hello world & co.'
# Encode a query dict (uses + for spaces — form encoding)
qs = urlencode({'q': 'hello world', 'page': '2'})
# → 'q=hello+world&page=2'
# quote_plus encodes spaces as + (match HTML form encoding)
plus = quote_plus('hello world')
# → 'hello+world' // Encode a single value (spaces → %20)
string encoded = Uri.EscapeDataString("hello world & co.");
// → "hello%20world%20%26%20co."
// Decode
string decoded = Uri.UnescapeDataString("hello%20world%20%26%20co.");
// → "hello world & co."
// Older System.Web API (spaces → +, form encoding):
// HttpUtility.UrlEncode("hello world") → "hello+world" # .NET method — works in PS 5+ and PowerShell Core
$encoded = [Uri]::EscapeDataString('hello world & co.')
# → 'hello%20world%20%26%20co.'
$decoded = [Uri]::UnescapeDataString('hello%20world%20%26%20co.')
# → 'hello world & co.'
# Alternate via System.Web (Desktop PS only):
Add-Type -AssemblyName System.Web
$enc2 = [System.Web.HttpUtility]::UrlEncode('hello world')
# → 'hello+world' import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// Encode (URLEncoder uses + for spaces — form encoding)
String encoded = URLEncoder.encode("hello world & co.", StandardCharsets.UTF_8);
// → "hello+world+%26+co."
// Decode
String decoded = URLDecoder.decode("hello+world+%26+co.", StandardCharsets.UTF_8);
// → "hello world & co." import "net/url"
// QueryEscape: spaces become +
encoded := url.QueryEscape("hello world & co.")
// → "hello+world+%26+co."
decoded, err := url.QueryUnescape("hello+world+%26+co.")
// → "hello world & co.", nil
// PathEscape: spaces become %20
pathSafe := url.PathEscape("hello world & co.")
// → "hello%20world%20&%20co." Runs entirely in your browser. Nothing is uploaded.
免費線上 URL 編碼與解碼工具
這款 URL 編碼與解碼工具可將文字轉換為百分比編碼格式——或還原該過程——直接在您的瀏覽器中完成。貼上文字,選擇編碼或解碼,選擇元件或完整 URI 規則,結果即時更新。無需上傳任何內容;每項操作完全在您的瀏覽器中使用與您程式碼相同的內建 JavaScript 函式執行。
百分比編碼在 Web 開發中不可避免。空格、& 符號、等號和非 ASCII 字元在能安全地出現在 URL 中之前都必須進行跳脫。無論您是在建構 API 請求、除錯追蹤連結還是閱讀伺服器日誌,此工具都能處理所有邊界情況——包括多位元組 UTF-8 字元、格式錯誤的序列以及 + 與 %20 之間的空格歧義。
encodeURIComponent 與 encodeURI——該用哪個規則?
encodeURIComponent 適用於單個查詢值、路徑段或任何要插入 URL 的字串。它會編碼幾乎所有特殊字元——包括 ?、&、=、/、# 和 :——確保該值不會破壞 URL 結構。範例:'hello world & page=2' 變為 'hello%20world%20%26%20page%3D2'。
encodeURI 用於在不破壞完整 URL 的前提下進行編碼。它保留結構性字元(: / ? # &)以使 URL 保持可用,同時仍對空格和非 ASCII 字元進行編碼。如有疑問,對於作為值插入的內容請優先使用元件規則——這是幾乎所有 Web 框架中的安全預設值。
空格:%20 還是 +——表單編碼的差異
URL 中有兩種有效的空格編碼方式。在 URL 路徑(? 之前的部分)中,RFC 3986 要求使用 %20。在 HTML 表單查詢字串中,舊版 application/x-www-form-urlencoded 格式歷史上以 + 表示空格——瀏覽器透過 GET 提交表單時至今仍使用此方式。
兩者都表示「空格」,但只在各自的上下文中有效。URL 路徑中的 + 是字面量加號;查詢字串中的 + 是空格。查詢值中的字面量加號必須編碼為 %2B,否則會被誤讀。解碼模式的將 + 視為空格開關在執行 decodeURIComponent 之前先將 + 替換為空格,適用於處理表單編碼輸入。
與 CyberChef 及其他 URL 編碼工具的比較
CyberChef(來自 GCHQ)功能強大,但圍繞「食譜」管道概念設計——您需要將多個操作串聯起來。僅為 URL 編碼或解碼,您仍然需要搜尋操作、將其拖入食譜,然後處理輸入。對於複雜的資料轉換它很出色;但對於快速編碼/解碼來說顯得繁瑣。
urldecoder.org 等其他線上工具雖然簡單,但會顯示廣告,每次操作都需要整頁重新整理,且不提供各語言的程式碼片段。本工具每次按鍵即時更新結果,支援元件和完整 URI 兩種規則,包含常見編碼字元參考表,並以 JavaScript、Python、C#、PowerShell、Java 和 Go 顯示可直接複製的程式碼——全程無需上傳任何內容。
特殊字元快速參考
Web 開發中最常編碼的字元:空格 → %20(或查詢字串中的 +)、& → %26、= → %3D、? → %3F、# → %23、/ → %2F、: → %3A、@ → %40、+ → %2B、% → %25。多位元組 UTF-8 字元展開為多個序列:€ → %E2%82%AC、é → %C3%A9。
永遠不會被編碼的字元是非保留字元集:字母 A–Z 和 a–z、數字 0–9 以及四個符號 - _ . ~。其他所有內容——包括每個非 ASCII 字元——在符合標準的 URL 中都必須進行百分比編碼。
在 JavaScript、Python、C#、PowerShell 和 Java 中進行 URL 編碼
每種主流語言都內建了相應函式。JavaScript / Node.js 中:encodeURIComponent(str) 和 decodeURIComponent(str)——無需任何匯入。Python 中:urllib.parse.quote(str) 和 unquote(str);完整查詢字串使用 urlencode(dict)。C# 中:System 命名空間下的 Uri.EscapeDataString(str) 和 Uri.UnescapeDataString(str)。PowerShell 中:[Uri]::EscapeDataString(str),PS 5+ 和 PowerShell Core 均可用。Java 中:URLEncoder.encode(str, StandardCharsets.UTF_8)。
各語言程式碼片段面板包含 JavaScript、Python、C#、PowerShell、Java 和 Go 的可直接複製程式碼,讓您立即將正確的呼叫加入專案——並附有各語言標準函式庫中 + 與 %20 空格行為的說明。
100% 私密——離線也可使用
每次編碼和解碼操作僅使用瀏覽器內建函式:encodeURIComponent、decodeURIComponent、encodeURI 和 decodeURI。任何文字都不會傳送到伺服器、不會被儲存或記錄——包括您貼上的 URL 中的網域名稱。頁面載入完成後,即使斷網裝置也能完美執行。將其加入書籤,隨時需要編碼、解碼或檢查 URL 時使用。
Frequently asked questions
什麼是 URL 編碼?
URL 編碼(也稱百分比編碼)將 URL 中不安全的字元轉換為 % 符號後跟兩位十六進位數字。例如,空格變為 %20,& 符號變為 %26,井號變為 %23。它確保每個 URL 在任何瀏覽器、HTTP 標頭或伺服器上都有效,不受字元集影響。
URL 編碼中 %20 是什麼意思?
%20 是空格字元的百分比編碼表示。20 是 ASCII 32(空格)的十六進位值。因此 URL 'hello%20world' 解碼回 'hello world'。在 HTML 表單查詢字串中,您有時會看到用 + 代替 %20 表示空格——兩者在查詢字串中含義相同,但在 URL 路徑中不同。
encodeURI 和 encodeURIComponent 有什麼差異?
encodeURIComponent 用於單個查詢值或路徑段——它編碼幾乎所有內容,包括 : / ? # & =,確保值不會破壞 URL 結構。encodeURI 用於完整 URL——它保留 : / ? & # 等結構性字元不變,使 URL 保持可用。作為原則,始終對插入連結的單個值使用 encodeURIComponent。
如何在 JavaScript 中進行 URL 編碼?
對單個值使用 encodeURIComponent():encodeURIComponent('hello world & co.') 回傳 'hello%20world%20%26%20co.'。用 decodeURIComponent() 還原。對完整 URL 使用 encodeURI() / decodeURI()——它們跳過結構性字元。兩者都內建於所有瀏覽器和 Node.js,無需匯入。
中文字元如何進行 URL 編碼?
非 ASCII 字元(包括中文、日文、emoji 等)透過 UTF-8 編碼轉換為多個 %XX 序列。例如,漢字「中」的 UTF-8 編碼為三個位元組,URL 編碼後為 %E4%B8%AD。encodeURIComponent() 會自動處理此轉換,您只需傳入原始字串即可。
空格有時是 %20、有時是 +,為什麼?
在 URL 路徑(? 之前)中,根據 RFC 3986,空格必須為 %20。在查詢字串中,HTML 表單使用的舊版 application/x-www-form-urlencoded 格式歷史上將空格編碼為 + 以求簡潔。兩者都表示「空格」,但只在各自上下文中有效——查詢值中的字面量 + 必須編碼為 %2B,否則會被誤讀為空格。
線上編碼/解碼安全嗎?
是的——本工具完全在本地執行。每次操作都在您的瀏覽器中使用內建 JavaScript 函式執行。您的文字永遠不會傳送到任何伺服器、不會被儲存或記錄。頁面載入後即使斷網也能正常使用。這對於編碼 API 金鑰、憑證或權杖時尤為重要。