什麼是 Percent-Encoding?為什麼它是必要的?
Percent-encoding 是現代 Web 基礎設施的核心基石,決定了資料如何在網際網路上傳輸。網際網路依賴統一資源識別碼(URI)來定位資源。然而 URI 規範(RFC 3986)嚴格限制了可在 URL 中安全使用的字元。允許使用的「未保留字元」僅限於大寫和小寫英文字母(A-Z, a-z)、數字(0-9)、連字符(-)、句點(.)、底線(_)和波浪號(~)。其他所有字元都被視為「不安全」或「保留」字元,因為它們在 URL 格式中具有特殊的結構意義。例如,& 用於分隔查詢參數,= 用於賦值,/ 用於定義目錄路徑。如果您需要傳輸 & 字元本身作為資料內容而非結構分隔符號,就必須進行 Percent 編碼。
當字元需要被編碼時,首先會根據 UTF-8 標準轉換為對應的位元組值。然後每個位元組用 % 加上兩位十六進位數字表示。例如,空格字元對應的十進位位元組值為 32(十六進位為 20),因此變為 %20。@ 變成 %40,逗號變成 %2C。這種系統化的轉換保證了 Web 伺服器、負載平衡器和瀏覽器能夠毫無歧義地解析 URL 邊界。如果沒有 Percent 編碼,傳遞包含使用者輸入的複雜查詢字串會破壞 URL 結構,導致 400 Bad Request 錯誤,甚至引發 HTTP 參數污染等嚴重安全漏洞。
歷史上,不同系統處理 URL 編碼的方式有所差異。例如,提交 application/x-www-form-urlencoded 表單資料時傳統上將空格編碼為 +,而 RFC 3986 則嚴格規定為 %20。儘管現代 Web 框架抽象化了這些細節,但擁有一個可靠且 100% 免費的手動 Percent 編碼工具,對於偵錯 API 和建立深度連結而言仍然是不可或缺的。