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

 

posted @ 2015-04-11 20:31  ~风轻云淡~  阅读(5069)  评论(0编辑  收藏  举报