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

Struts2 透過 JSON 傳遞中文參數解決亂碼問題

     編輯:Java 相關知識

問題背景

在 Struts2 應用中,前端透過 JSON 向後端傳遞中文參數時,常因編碼不一致導致亂碼。本文提供雙端編碼/解碼的標準解決方案。

前端處理:雙重編碼

在 JavaScript 中使用 encodeURI 進行兩次編碼,確保特殊字符正確傳輸:

var url = "orderPrint.action?roomName=" + encodeURI(encodeURI(roomName));
$.post(url, function(data) {
    // 回調處理
});

後端處理:URL 解碼

在 Action 或 Service 層使用 URLDecoder.decode 以 UTF-8 還原:

String room = URLDecoder.decode(orderBean.getRoomName(), "UTF-8");

原理解析

  • 雙重 encodeURI:第一次編碼將中文轉為 %XX 格式,第二次將 % 符號本身編碼為 %25,防止伺服器過早解碼導致資料遺失。
  • UTF-8 解碼:後端對應使用相同字符集還原,確保中文還原準確。

適用場景

此方案適用於 Struts2 以 GET/POST 方式接收 URL 參數、AJAX 傳遞中文、REST 風格 API 參數傳遞等場景。

注意事項

  • 前後端字符集必須一致(建議全鏈路 UTF-8)
  • 若使用 POST 請求體傳 JSON,則無需 URL 編碼,直接設定 Content-Type: application/json;charset=UTF-8 即可
  • Tomcat 8+ 需在 server.xml 的 Connector 配置 URIEncoding="UTF-8"
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved