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

JSP 頁面間傳遞中文參數的編解碼完整指南

     編輯:關於JSP

在 Web 開發中,URL 參數傳遞中文內容時經常會遇到亂碼問題。這主要是因為瀏覽器與伺服器對字元編碼的處理方式不一致所導致。本文將詳細介紹 JSP 頁面之間傳遞中文參數的正確編碼與解碼方法,並提供完整的程式碼範例供參考。

核心解決方案:雙重編碼與指定字元集解碼

要解決中文參數亂碼,關鍵在於前端雙重編碼與後端指定 UTF-8 解碼的配合使用:

前端編碼(JavaScript)

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

這裡使用兩次 encodeURI() 是為了確保特殊字元(如 %、&、= 等)被正確轉義,避免在 URL 傳輸過程中被誤解析。

後端解碼(JSP/Java)

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

務必明確指定 UTF-8 字元集,否則伺服器可能會使用預設編碼(如 ISO-8859-1)導致解碼錯誤。

完整範例:a.jsp 傳遞參數到 b.jsp

a.jsp(發送端)

<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>中文參數傳遞測試</title>
</head>
<body>
    <%
        String str_test = "華工";
    %>
    <form method="post" action="b.jsp?test=<%= java.net.URLEncoder.encode(str_test, "UTF-8") %>">
        <input type="submit" value="提交" name="submitBtn">
    </form>
</body>
</html>

b.jsp(接收端)

<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>接收中文參數</title>
</head>
<body>
    <%
        // 正確方式:指定 ISO-8859-1 取得原始位元組,再以 UTF-8 解碼
        String param = request.getParameter("test");
        if (param != null) {
            String str = new String(param.getBytes("ISO-8859-1"), "UTF-8");
            out.println("接收到的參數:" + str);
        }
    %>
</body>
</html>

關鍵注意事項

  • 統一字元集:所有 JSP 頁面、資料庫連線、HTML meta 標籤都應統一使用 UTF-8。
  • POST 表單傳遞:在 <form> 標籤加上 accept-charset="UTF-8" 可進一步保障編碼一致性。
  • Tomcat 設定:在 server.xml 的 <Connector> 加入 URIEncoding="UTF-8" 可解決 GET 請求亂碼。

掌握這套「雙重編碼 + 指定解碼」模式,即可徹底解決 JSP 頁面間中文參數傳遞的亂碼困擾。

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