JSP中解决中文乱码

<%@ page language="java" contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<title>输入用户名</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="session.jsp">
<div align="center">
<table width="23%" border="0">
<tr>
<td width="36%"><div align="center">您的名字是:</div></td>
<td width="64%">
<label>
<div align="center">
<input type="text" name="name"/>
</div>
</label>
</td>
</tr>
<tr>
<td colspan="2">
<label>
<div align="center">
<input type="submit" name="Submit" value="提交"/>
</div>
</label>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<title>输入最想去的地方</title>
</head>
<body>
<%
String name=request.getParameter("name"); //获取用户填写的用户名 此处会导致中文乱码
session.setAttribute("name",name); //将用户名保存在session对象中
%>
<div align="center">
<form id="form1" name="form1" method="post" action="result.jsp">
<table width="28%" border="0">
<tr>
<td>您的名字是:</td>
<td><%=name%></td>
</tr>
<tr>
<td>您最喜欢去的地方是:</td>
<td><label>
<input type="text" name="address"/>
</label>
</td>
</tr>
<tr>
<td colspan="2"><label>
<div align="center">
<input type="submit" name="Submit" value="提交"/>
</div>
</label>
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gbk">
<title>显示结果</title>
</head>
<body>
<%
String name=session.getAttribute("name").toString(); //获取保存在session范围内的对象
String solution=request.getParameter("address"); //获取用户输入的最喜欢去的地方 此处同样会导致中文乱码
%>
<form id="form1" name="form1" method="post" action="">
<table width="28%" border="0">
<tr>
<td colspan="2"><div align="center"><strong>显示答案</strong></div></td>
</tr>
<tr>
<td width="49%"><div align="left">您的名字是:</div></td>
<td width="51%"><label>
<div align="left"><%=name%></div>
</label></td>
</tr>
<tr>
<td><label>
<div align="left">您最喜欢去的地方是:</div>
</label></td>
<td><div align="left"><%=solution%></div></td>
</tr>
</table>
</form>
</body>
</html>

在显示参数值时中文内容变成了乱码,这是因为请求参数的文字编码方式与页面中的不一致所造成的,所有的request请求都是ISO-8859-1的,而在页面中采用的是gbk编码方式。要解决此问题,只要将获取到的数据通过String的构造方法使用指定的编码类型重新构造一个String对象,即可正确地显示出中文信息。

<%
String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk"); //获取用户填写的用户名
session.setAttribute("name",name); //将用户名保存在session对象中
%>
<%
String name=session.getAttribute("name").toString(); //获取保存在session范围内的对象
String solution=new String(request.getParameter("address").getBytes("ISO-8859-1"),"gbk"); //获取用户输入的最喜欢去的地方
%>
上一篇:20155203 2016-2017-3 《Java程序设计》第4周学习总结


下一篇:Amazon MWS 上传数据 (二) 构造请求