首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java URLEncoder.encode 與 JavaScript encodeURIComponent 差異詳解

     編輯:Java 相關知識

前後端資料傳輸時,URL 編碼不一致是常見坑點。本文釐清 URLEncoder.encode(Java 後端)與 encodeURIComponent(JavaScript 前端)的核心差異。

核心差異:5 個特殊字元處理不同

encodeURIComponent 不編碼以下 5 個字元,而 URLEncoder.encode 會編碼:

字元encodeURIComponentURLEncoder.encode
!! (保留)%21
'' (保留)%27
(( (保留)%28
)) (保留)%29
~~ (保留)%7E

解碼端行為

decodeURIComponent 與 URLDecoder.decode 對這些字元的解碼結果一致,雙向相容。但若業務邏輯涉及「比對前後端編碼結果」(如簽名驗證、快取鍵生成),則會因編碼差異導致邏輯錯誤。

最佳實踐建議

  1. 統一編碼規範:專案制定編碼標準,前後端協議使用同一字元集處理方式。
  2. 關鍵場景測試:含有 !'()~ 的測試用例必須納入回歸測試。
  3. 框架層統一:若使用 Spring MVC、JAX-RS 等框架,檢查其內部編碼處理是否已統一;若未統一,需在攔截器/過濾器層補齊。

理解此差異,能避免「明明內容相同,編碼卻不同」的困擾,保障前後端資料傳輸一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved