首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

AJAX 參數雙重 encodeURIComponent 原因:瀏覽器默認編碼不一致

     編輯:程式設計綜合問答

現象

為解決中文亂碼,傳參前調用兩次 encodeURIComponent。

原因

  • IE 默認編碼為系統代碼頁(如 GBK),發送 AJAX 時自動按 GBK 編碼 URL 參數。
  • Firefox/Chrome 默認 UTF-8。
  • 服務端(如 Java Tomcat)默認按 ISO-8859-1 或 UTF-8 解碼 GET 參數。

雙重編碼是歷史妥協方案:第一次編碼確保字符為 %XX 形式,第二次將 % 編碼為 %25,使經過不同編碼層傳輸後仍能還原。但極不穩定。

現代標準做法

  1. 統一 UTF-8 全鏈路:
    • 頁面 <meta charset="UTF-8">
    • 服務端設置 request.setCharacterEncoding("UTF-8") / Tomcat URIEncoding="UTF-8"
    • JS 單次 encodeURIComponent 即可。
  2. 改用 POST + JSON:請求體明確 UTF-8,避開 URL 編碼地獄。
  3. jQuery $.param / $.ajax data 對象:內部自動處理編碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved