支柱內容
編碼與解碼工作流程指南
搞清楚 Base64、URL 編碼、HTML 實體和 Unicode 跳脫分別該在什麼場景用,以及它們各自解決什麼問題。
編碼從來不是一件事,而是一組按上下文區分的轉換動作,用來讓內容適合傳輸、嵌入、展示或儲存。把這些上下文混在一起,是最容易造成 URL 失效、文字亂碼或跳脫內容直接漏到介面上的原因之一。
先看邊界,再選編碼方式
當內容要進入查詢參數或路徑片段時,用 URL 編碼;當使用者可見文字要插進 HTML 標記裡時,用 HTML 實體保護尖括號等字元;當字串要穿過原始碼或序列化文字邊界時,用 Unicode 跳脫;當二進位或普通文字需要一個「文字安全外殼」時,再使用 Base64。
最常見的失敗模式
最經典的錯誤是重複編碼:一個已經 URL 跳脫過的值又被跳脫一遍,下游拿到的就是垃圾內容。另一個常見誤解是把 Base64 當成加密。它只是可逆編碼,不能用來隱藏敏感資訊。團隊還經常忽略 Base64 會讓體積大約膨脹三分之一,這對內嵌大型資源尤其關鍵。
- 編碼應盡量靠近輸出邊界,而不是越早越好。
- 保留一份原始字串做除錯基準,方便定位內容從哪裡開始被污染。
- 只要沒有單獨加密,任何被編碼的金鑰都應被視為已暴露。
一套適合瀏覽器除錯的例行流程
在相信結果之前,先把樣本反解碼回可讀形式;把編碼前後的值並排對照;如果文字最終要進入 HTML 或 URL,不要因為「能解回來」就預設它適用於所有情境,而是要按真實目標場景再驗證一遍。
延伸閱讀
指南與工作流程
相關工具
工具庫