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"); //获取用户输入的最喜欢去的地方 %>