URL 編碼講解
更新 2026-07-06
複製一個帶搜尋詞的 URL,你常會在本該是空格或帶重音字母的地方看到 %20 或 %C3%A9 之類的東西。那就是 URL 編碼在起作用。本指南講解它做什麼、為何需要,以及哪些字元會被跳脫。
URL 編碼是什麼
URL 編碼 —— 也叫 百分號編碼(percent-encoding) —— 是在 URL 中表示那些否則會不安全或有歧義的字元的一種方式。每個這樣的字元會被替換成一個 % 後跟其十六進位位元組值。空格變成 %20;&符號變成 %26。
為何需要
URL 只能包含有限的一套字元,其中一些還有特殊職責:? 開啟查詢字串,& 分隔參數,/ 分隔路徑段,# 標記片段。如果你要放進 URL 的值含有其中之一,就必須編碼它,讓它被當作資料而非結構。
Search term: cats & dogs In a URL: ?q=cats%20%26%20dogs
不編碼的話,原始的 & 會被讀成一個新參數的開始,搜尋就會出錯。
保留字元 vs. 非保留字元
- 非保留(Unreserved) 字元 —— 字母、數字,以及
- _ . ~—— 總是安全,永不需要編碼。 - 保留(Reserved) 字元 —— 像
? & / # : @ =—— 具有特殊含義,作為字面資料使用時必須編碼。 - 其他一切 —— 空格、帶重音字母、表情符號和大多數符號 —— 依據其 UTF-8 位元組編碼,這正是一個字元可能變成好幾個
%xx對的原因。
一個常見的混淆:加號
在表單提交的查詢字串裡,空格有時被編碼成 + 而非 %20。視語境兩者都可能表示「空格」,這會絆倒人 —— 拿不準時,%20 總是安全的。
URL 編碼 vs. Base64
這兩者解決不同的問題。URL 編碼讓文字能安全地放 在 URL 裡面;Base64 讓 二進位 資料能安全地穿過基於文字的通道。它們有時會合起來用(Base64URL),但並不可互換。
更多 資料格式與編碼
查看全部 資料格式與編碼 指南 →本指南提到的工具