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

徹底解決JSP中文亂碼:頁面顯示與表單提交雙重攻略

     編輯:關於JSP

亂碼根因:編碼鏈路不一致

JSP 中文亂碼本質是「瀏覽器解碼編碼 ≠ 服務器編碼編碼」。涉及環節:JSP 文件保存編碼、頁面指令 contentType、Meta 標籤、請求參數解碼、數據庫連接編碼。任一環節不匹配即現亂碼。

場景一:頁面直接輸出中文亂碼

問題代碼:

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body><% out.print("JSP的中文處理"); %></body>
</html>

解決方案:在頁面第一行添加 page 指令,強制響應頭編碼:

<%@ page contentType="text/html; charset=gb2312" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body><% out.print("JSP的中文處理"); %></body>
</html>

原理:pageEncoding(或 contentType 含 charset)決定響應頭 Content-Type: text/html; charset=gb2312,瀏覽器據此解碼。Meta 標籤優先級較低,僅作備用。

場景二:表單提交中文參數亂碼

提交頁(submit.jsp)編碼正確,但處理頁(process.jsp)未指定請求編碼,導致 request.getParameter() 解碼錯誤。

修正:在 process.jsp 頭部添加:

<% request.setCharacterEncoding("gb2312"); %>

必須在讀取任何參數之前調用,否則無效。

全鏈路編碼統一清單

層級配置點推薦值
JSP 文件IDE 保存編碼UTF-8 / GBK
頁面指令<%@ page pageEncoding="..." %>與文件編碼一致
響應頭contentType="text/html; charset=..."與頁面編碼一致
請求解碼request.setCharacterEncoding(...)與表單頁編碼一致
Tomcatserver.xml URIEncodingUTF-8
數據庫JDBC URL characterEncoding與數據庫編碼一致

現代建議:全鏈路統一使用 UTF-8,避免 GBK/GB2312 在移動端、多語言場景下的兼容性問題。Spring Boot 等框架默認即為 UTF-8。

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