選擇語言

URL 編碼工具:安全轉換文字為百分比編碼格式

支援元件與完整 URL 模式,可選空格轉 + 號,自動處理 UTF-8 字元如 ü、ñ、ß 等。

Mehmet Demiray 發佈日期 更新日期
分享
組件模式會編碼保留字元;完整模式會保留 URL 結構

為什麼 URL 需要編碼?

當您在瀏覽器網址列輸入包含中文、空格或特殊符號的內容時,可能會發現網頁無法正確載入,甚至出現錯誤。這是因為網際網路標準 RFC 3986 規定,URL 中僅允許使用「未保留字元」(unreserved characters),包括英文字母、數字,以及 - _ . ~ 四個符號。其他所有字元——例如中文「測試」、德文 ü、空格、問號 ?、等號 =、與符號 &——都屬於「保留字元」或非 ASCII 字元,必須經過百分比編碼(percent-encoding)才能安全傳輸。舉例來說,若想在 Google 搜尋「台北101」,實際傳送的網址會將「台北101」轉為 %E5%8F%B0%E5%8C%97101。若未經編碼,伺服器可能誤解參數結構,導致資料遺失或功能異常。因此,無論是開發 API、建立 UTM 追蹤連結,還是處理表單提交,正確使用 URL 編碼工具 都是確保資料完整性的關鍵步驟。若您需要還原編碼內容,可搭配 URL 解碼工具 使用。

元件編碼 vs 完整 URL 編碼:該選哪一種?

許多開發者混淆兩種常見的 URL 編碼情境:編碼整個 URL 與僅編碼 URL 中的某個元件(如查詢參數值)。這正是 JavaScript 中 encodeURI() 與 encodeURIComponent() 的差異所在。當您使用 URL 編碼工具 時,若選擇「完整 URL」模式,系統會保留協定(如 https://)、主機名稱及路徑中的斜線 /、問號 ?、與符號 & 等結構性符號,僅對非結構部分(如中文路徑或檔名)進行編碼。但若您選擇「元件」模式(類似 encodeURIComponent),則連 / ? & = 這些符號也會被轉為 %2F、%3F、%26、%3D。舉例來說,若要將參數值設為「價格=NT$500&折扣=10%」,您必須使用元件模式,否則 & 符號會被視為新參數的開頭,導致後半段資料遺失。反之,若要編碼整個網址如 https://example.com/產品頁面?查詢=咖啡,則應選用完整 URL 模式以維持結構正確。正確選擇模式,能避免常見的參數解析錯誤。

空格到底該用 %20 還是 +?

在 URL 中處理空格時,您可能會看到兩種形式:%20 與 +。這其實源自不同的編碼規範。根據 RFC 3986 標準,空格應一律編碼為 %20,這適用於 URL 路徑、片段識別碼(fragment)等所有位置。然而,在 HTML 表單以 application/x-www-form-urlencoded 格式提交資料時(例如搜尋框或登入表單),歷史慣例允許將空格將轉為 + 號。因此,當您的用途是建構查詢字串(query string)中的參數值,且該參數將模擬表單提交行為時,可選擇「以 + 編碼空格」的選項。例如,搜尋「珍珠奶茶 推薦」若透過表單送出,可能變成 q=珍珠奶茶+推薦;但若直接嵌入 URL 路徑,則應為 /search/珍珠奶茶%20推薦。使用 URL 編碼工具 時,請根據實際應用場景決定是否啟用此選項。若不確定,建議優先使用 %20 以符合現代 Web 標準。

Unicode 字元(如中文、表情符號)如何在 URL 中呈現?

現代網址經常包含中文、日文、阿拉伯文,甚至表情符號(emoji),這些都屬於 Unicode 字元。根據國際化網域名稱(IDN)與 RFC 3986 規範,這些字元必須先轉換為 UTF-8 位元組序列,再對每個位元組進行百分比編碼。例如,中文「測」的 UTF-8 編碼為 E6 B8 AC,因此在網址中顯示為 %E6%B8%AC;德文 ü 則轉為 %C3%BC;而笑臉 😊(U+1F60A)會被編碼為 %F0%9F%98%8A。這意味著即使您輸入的是純文字,經過 URL 編碼工具 處理後,結果會是一串由 % 開頭的十六進位碼。這種機制確保全球各地的使用者都能在不同系統間安全交換包含本地語言的連結。值得注意的是,瀏覽器通常會自動將地址列中的 Unicode 顯示為可讀文字,但實際傳輸時仍使用編碼格式。若需手動建構含多國語言的追蹤連結(如 UTM 參數),務必透過此工具預先編碼,避免伺服器端解析失敗。

常見問題:URL 編碼實務指南

許多使用者詢問:「什麼是百分比編碼?」簡單說,它是一種將非安全字元轉換為 % 後接兩位十六進位數字的機制,確保 URL 在傳輸過程中不被誤解。針對「查詢參數值該用哪種模式?」——答案永遠是「元件模式」,因為參數值不應包含未編碼的 & 或 =,否則會破壞整個查詢字串結構。例如,若參數值為「A&B=1」,未編碼將使伺服器誤判為兩個參數 A 與 B=1。至於「為什麼我的 & 符號讓連結失效?」正是此原因:& 是分隔參數的保留字元,必須編碼為 %26。最後,關於「表情符號與帶音調字母如何處理?」——如前述,它們會依 UTF-8 轉為多段 % 編碼,例如 café 中的 é 會變成 %C3%A9。使用 URL 編碼工具 時,選擇正確模式並確認空格處理方式,即可避免絕大多數問題。若需反向操作,可搭配 URL 解碼工具 驗證結果。此外,若要將編碼後的網址轉為 QR Code 分享,亦可使用 URL QR Code 產生器

最常被問到的問題

什麼是百分比編碼(Percent Encoding)?

百分比編碼是一種將特殊字元轉換為「%」加上十六進位數字的格式,確保文字能安全地用於 URL 中。根據 RFC 3986 標準,保留字元(如 /、?、&、=)和非 ASCII 字元(如中文、ü、emoji)都需經過此處理,避免瀏覽器或伺服器誤解網址結構。

我該用「元件編碼」還是「完整 URL 編碼」模式?

若你正在編碼單一參數值(例如 UTM 標籤中的 campaign 名稱),請選「元件編碼」,它會對 /、?、& 等保留字元進行轉義。若你已有一整條合法 URL(含協定、網域、路徑),僅需對其中非 ASCII 部分編碼,則選「完整 URL 編碼」,它會保留這些結構性符號不變。

為什麼我輸入的 & 符號讓查詢字串斷掉了?

因為 & 在 URL 查詢字串中用來分隔不同參數。若你直接將含 & 的文字放入參數值卻未編碼,瀏覽器會誤以為那是新參數的開頭。使用 URL 編碼工具的「元件編碼」模式,& 會被轉為 %26,確保整個值被正確視為單一參數內容。

空格應該變成 %20 還是 +?

這取決於用途:在一般 URL 路徑或參數值中,空格應編碼為 %20;但在 HTML 表單提交的查詢字串(application/x-www-form-urlencoded 格式)中,傳統上會用 + 代表空格。本工具提供「以 + 編碼空格」選項,方便處理表單風格的資料。

像「ü」或 😊 這種特殊字元會怎麼被編碼?

所有非 ASCII 字元(包括帶分音符號的拉丁字母、中文、emoji 等)都會先以 UTF-8 編碼成位元組序列,再對每個位元組進行百分比編碼。例如 ü 會變成 %C3%BC,😊 則會變成 %F0%9F%98%8A。這樣可確保國際化字元在各種系統間正確傳遞。

編碼後的結果可以怎麼使用?

編碼完成後,你可以一鍵複製結果貼到程式碼或行銷連結中,也可下載為純文字檔備存。若你需要反向操作,可搭配 URL 解碼工具 將 %XX 序列還原為原始文字。

這個工具和 JavaScript 的 encodeURIComponent 有什麼關係?

本工具的「元件編碼」模式行為與 JavaScript 的 encodeURIComponent 函式一致,會對所有保留字元(除 * - . _ ~ 外)進行轉義,適合用於單一 URI 元件(如查詢參數值)。而「完整 URL 編碼」則類似 encodeURI,保留 URL 結構符號不變。