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對象,便可正確地顯示出中文信息。html

<%
    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");  //獲取用戶輸入的最喜歡去的地方
%>
相關文章
相關標籤/搜索