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

EasyUI 參數傳遞中文亂碼解決:雙重 encodeURIComponent

     編輯:程式設計綜合問答

問題重現

JS 構建 URL:href:'yyj/pk?tiName='+tiName,後端 request.getParameter("tiName") 取到亂碼。

根因

瀏覽器對 URL 參數自動進行 **UTF-8 編碼**;若伺服器預設解碼為 ISO-8859-1(Tomcat 8 以前預設),中文會亂碼。且單次 encodeURIComponent 在某些容器/代理轉發鏈中仍可能被二次解碼錯誤。

通用修復

// 前端:雙重編碼
href: 'yyj/pk?tiName=' + encodeURIComponent(encodeURIComponent(tiName))
// 後端:對應雙重解碼
String tiName = request.getParameter("tiName");
tiName = URLDecoder.decode(tiName, "UTF-8"); // 第一次
tiName = URLDecoder.decode(tiName, "UTF-8"); // 第二次

更優方案(推薦)

  1. **統一編碼配置**:Tomcat server.xml <Connector URIEncoding="UTF-8"/>,Spring CharacterEncodingFilter 強制 UTF-8,前端**單次** encodeURIComponent 即可。
  2. **POST + JSON**:避免 URL 參數攜帶中文,改用 $.post(url, {tiName: tiName}, ...),Body 以 UTF-8 JSON 傳輸,徹底繞過 URL 編碼地獄。

參考詳解:CSDN 文章

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