RunToolz iconRunToolz
Welcome to RunToolz!
URL網頁開發編碼

為什麼你的 URL 壞了(以及如何修復它)

URL 編碼不是可選的,忽略它就會導致連結失效。了解為什麼空格、中文和特殊字符必須編碼,掌握 encodeURI 和 encodeURIComponent 的正確用法。

RunToolz Team2026年1月5日4 min read

你將 URL 貼到電子郵件中。有人點擊它。他們得到 404。

URL 看起來沒問題。但在你的瀏覽器和他們的瀏覽器之間的某個地方,一個空格變成了 %20,一個 & 符號消失了,或者一個加號變成了完全不同的東西。

URL 編碼存在是因為 URL 只能包含某些字符。其他所有東西都需要翻譯。

特殊字符的問題

URL 在早期網路時代設計時有限的字符集。這些是安全的:

A-Z a-z 0-9 - _ . ~

其他所有東西?可能有問題。

空格 變成 %20+,取決於上下文。帶有字面空格的 URL 會損壞。

& 符號(&)分隔查詢參數。如果你的資料包含 & 符號,URL 解析器認為它正在開始一個新參數。

問號(?)表示查詢字串的開始。資料中的一個會混淆一切。

想親自試試嗎?編碼 URL

何時自動編碼

當你輸入 URL 時,瀏覽器會編碼它們。這就是為什麼你可以將「new york restaurants」貼到 Google 中並且它有效。

但自動化系統通常不會。API、指令碼、電子郵件客戶端——它們可能會完全按寫的方式傳遞你的 URL。如果它包含不安全的字符,它會損壞。

雙重編碼陷阱

這是它變得煩人的地方。

你編碼一個 URL。然後你把它作為參數放在另一個 URL 中。系統再次編碼它。現在 %20 變成 %2520

解碼時,你得到 %20 而不是空格。

這在重新導向 URL、追蹤參數和 OAuth 回調中經常發生。如果你的 URL 看起來有額外的百分號,檢查雙重編碼。

常見編碼錯誤

編碼整個 URL。 不要。只編碼值,而不是結構。https:// 不應該變成 https%3A%2F%2F

忘記加號。 在查詢字串中,+ 表示空格。如果你的資料有字面加號,它需要編碼,否則會消失。

假設編碼是冪等的。 編碼已經編碼的字串會產生不同的輸出。在編碼之前檢查某些東西是否已編碼。

實際範例

帶空格的搜尋查詢:

之前:https://example.com/search?q=new york pizza
之後: https://example.com/search?q=new%20york%20pizza

作為參數的回調 URL:

callback = https://mysite.com/auth?token=abc
編碼:   https%3A%2F%2Fmysite.com%2Fauth%3Ftoken%3Dabc

URL 中的電子郵件地址:

之前:user+tag@example.com
之後: user%2Btag%40example.com

除錯 URL 問題

檢查實際請求。 瀏覽器開發工具顯示正在發送的內容。將它與你期望的進行比較。

解碼並檢查。 如果 URL 無效,解碼它看看伺服器實際上正在接收什麼。

用特殊字符測試。 在你的測試資料中包含空格、& 符號和加號。如果它對「test」有效但對「test & verify」失敗,你有編碼問題。


URL 編碼是那些在無形中工作的東西之一,直到它不工作。理解規則有助於你在 URL 神秘地損壞時更快地除錯。