这个问题比较老了,但是网上的案例太少。自己做个记号两个页面a.jsp,b.jsp。一个发,一个收。a.jsp

<%...@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
6<title>A</title>
7</head>
8
9<body>
10<%...
11 String str_test = "中文";
12%>
13<form method=post action="b.jsp?test=<%=java.net.URLEncoder.encode(str_test) %>">
14 <input type="submit" value="按钮1">
15 </form>
16
17 <form method=post action="b.jsp?test=<%=str_test %>">
18 <input type="submit" value="按钮2">
19 </form>
20
21</body>
22</html>
b.jsp

<%...@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head><title>B</title></head>
5
6<body>
7 
8<%...
9 String str = new String(request.getParameter("test").getBytes("ISO8859_1"));
10%>
11 <BR>
12 <%=str %>
13 <BR>
14 <%...
15 String str1 = new String(request.getParameter("test").getBytes("ISO8859_1"),"gb2312");
16%>
17 <BR>
18 <%=str1 %>
19
20</body>
21</html>
22运行a.jsp,点击按钮1.
运行a.jsp,点击按钮1.
提交到b.jsp。
如果直接传中文呢?点击按钮2.

结果:
关键的问题在于每个页面中的 charset=gb2312;这个是页面显示中文的关键
本文介绍了一种在JSP页面间正确传递中文参数的方法。通过使用URLEncoder.encode进行编码,并在接收端用正确的字符集解码,确保了中文字符能够被正确地显示。
1977

被折叠的 条评论
为什么被折叠?



