URL 編碼完全指南:什麼時候需要 URL Encode?|線上 URL 編碼工具

詳細解說 URL 編碼(Percent-encoding)的原理和應用場景。了解什麼是 URL 編碼、為什麼需要編碼、常見的編碼字元對照表,以及如何使用線上工具快速完成 URL 編碼和解碼。

本文介紹的工具:URL 編碼/解碼器

什麼是 URL 編碼?

URL 編碼(URL Encoding),也稱為百分比編碼(Percent-encoding),是一種將特殊字元轉換為可以安全傳輸的格式的機制。根據 RFC 3986 標準,URL 中只能包含特定的 ASCII 字元,其他字元(包括中文、空格、特殊符號等)必須經過編碼才能安全地包含在 URL 中。

編碼的方式是將字元轉換為 % 加上兩位十六進位數字的形式。例如,空格被編碼為 %20,中文字「你」被編碼為 %E4%BD%A0


為什麼需要 URL 編碼?

URL 的結構

一個標準的 URL 由多個部分組成:

https://example.com:8080/path/to/page?key=value&name=test#section
|_____|  |___________|____|  |_________|  |________________|  |______|
協議     主機名      埠號    路徑         查詢參數           片段

URL 中的某些字元具有特殊含義(如 ?&=#/),如果數據中包含這些字元,就必須進行編碼,否則會破壞 URL 的結構。

常見需要編碼的場景

場景 說明 範例
中文參數 URL 中包含中文字元 ?name=你好?name=%E4%BD%A0%E5%A5%BD
空格 參數值包含空格 ?q=hello world?q=hello%20world
特殊符號 參數值包含 &、= 等 ?code=a&b?code=a%26b
API 請求 傳遞複雜的查詢參數 JSON 字串作為參數
重導向 URL URL 作為另一個 URL 的參數 ?redirect=https%3A%2F%2F...

URL 編碼對照表

以下是常見字元的 URL 編碼對照:

字元 編碼 說明
空格 %20+ 查詢字串中常用 +
! %21 驚嘆號
# %23 井號(片段標識符)
$ %24 美元符號
% %25 百分號本身
& %26 和號(參數分隔符)
+ %2B 加號
/ %2F 斜線(路徑分隔符)
: %3A 冒號
= %3D 等號(鍵值分隔符)
? %3F 問號(查詢字串開始)
@ %40 At 符號

JavaScript 中的 URL 編碼函數

JavaScript 提供了多個 URL 編碼相關的函數,它們的行為略有不同:

encodeURI vs encodeURIComponent

函數 用途 不編碼的字元
encodeURI() 編碼完整 URL A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
encodeURIComponent() 編碼 URL 組件(參數值) A-Z a-z 0-9 - _ . ! ~ * ' ( )

重要區別encodeURI() 不會編碼 URL 結構字元(如 /?&),適合編碼完整 URL;encodeURIComponent() 會編碼這些字元,適合編碼 URL 的參數值。

使用範例

// 編碼完整 URL
encodeURI("https://example.com/搜尋?q=你好 世界")
// → "https://example.com/%E6%90%9C%E5%B0%8B?q=%E4%BD%A0%E5%A5%BD%20%E4%B8%96%E7%95%8C"

// 編碼參數值
const value = "hello&world=test";
const url = `https://example.com?q=${encodeURIComponent(value)}`;
// → "https://example.com?q=hello%26world%3Dtest"

您可以使用我們的URL 編碼/解碼器快速測試這些編碼結果。


Base64 編碼 vs URL 編碼

特性 URL 編碼 Base64 編碼
用途 URL 中的特殊字元 二進位數據轉文字
格式 %XX A-Za-z0-9+/=
大小增長 每個特殊字元增長 3 倍 固定增長約 33%
可讀性 部分可讀 完全不可讀

我們的URL 編碼工具同時支援 URL 編碼和 Base64 編碼,方便您根據需求選擇合適的編碼方式。


常見問題(FAQ)

URL 編碼和 HTML 實體編碼有什麼區別?

URL 編碼使用 %XX 格式,用於 URL 中的特殊字元。HTML 實體編碼使用 &name;&#number; 格式,用於 HTML 文件中的特殊字元。兩者的用途和格式完全不同。

為什麼有時候看到 + 代替 %20

application/x-www-form-urlencoded 格式(HTML 表單提交)中,空格被編碼為 +。在標準的 URL 編碼(RFC 3986)中,空格被編碼為 %20。兩種方式在不同的上下文中都是正確的。

中文字元需要幾個 %XX

中文字元使用 UTF-8 編碼時,通常需要 3 個 %XX。例如,「你」的 UTF-8 編碼是 E4 BD A0,URL 編碼後為 %E4%BD%A0

什麼時候不需要 URL 編碼?

如果 URL 中只包含 ASCII 字母、數字和少數安全字元(-_.~),則不需要編碼。


相關工具推薦

立即使用我們的免費 URL 編碼工具,快速完成 URL 編碼和解碼!