URL 編碼(百分比編碼)完全指南:查詢參數怎麼正確轉義
一個典型的壞連結 你拼了一個搜尋連結,英文下一切正常,使用者一輸入中文就掛: https://example.com/search?q=書籤管理 & page=2 伺服器收到的 q 是 書籤管理 ,還多了一個叫 page 的參數——本來屬於查詢值的 & 被當成了分隔符。#、=、?、+ 和空白也有同樣的問題。 解決辦法是百分比編碼(URL 編碼):把不安全的字元替換成 % 加兩個十六進位數字,表示它的 UTF-8 位元組。 書籤管理 → %E6%9B%B8%E7%B1%A4%E7%AE%A1%E7%90%86 & → %26 空白 → %20 哪些字元是安全的 RFC 3986 把字元分成「未保留」與「保留」兩類,只有未保留字元可以原樣出現: 類別 字元 說明 未保留 A–Z a–z 0–9 - _ . ~ 任何位置都安全 保留(結構類) : / ? # [ ] @ 在 URL 中有結構意義 保留(子分隔符) ! $ & ' ( ) * + , ; = 在查詢字串中有意義 其他 空白、"、<、>、%、{}、中文⋯ 必須編碼 保留字元不是「不能用」,而是「有意義」。關鍵問題永遠是:這個 & 是想表達結構,還是想表達資料?如果是資料,就編碼它。 ...