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

JSP 頁面間傳遞中文參數編碼轉碼正確姿勢

     編輯:關於JSP

JSP 頁面間透過 URL 傳遞中文參數,需雙重編碼/解碼確保不亂碼。

編碼(發送端)

a.href = "./showCont.jsp?tcontent=" + encodeURI(encodeURI(tcontent));

雙重 encodeURI 防止瀏覽器自動解碼導致伺服器端接收錯誤。

解碼(接收端)

String value = java.net.URLDecoder.decode(request.getParameter("tcontent"), "UTF-8");

完整範例

a.jsp(發送)

<%@ page contentType="text/html; charset=GB2312" %>
<%
    String str_test = "華工";
%>
<form method="post" action="b.jsp?test=<%=java.net.URLEncoder.encode(str_test, "GB2312") %>">
    <input type="submit" value="提交">
</form>

b.jsp(接收)

<%@ page contentType="text/html; charset=GB2312" %>
<%
    String str = new String(request.getParameter("test").getBytes("ISO8859_1"), "GB2312");
%>
<%= str %>

原理解析

  • Tomcat 預設以 ISO-8859-1 解碼 URL 參數,導致中文字節錯位。
  • getBytes("ISO8859_1") 取得原始字節陣列,再用 new String(bytes, "GB2312") 正確重組字串。
  • 若專案統一 UTF-8,將上述 GB2312 替換為 UTF-8 並配合 Filter 設定 request.setCharacterEncoding("UTF-8") 即可簡化為單層編碼/解碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved