当前位置: 代码迷 >> Java Web开发 >> 还是乱码有关问题啊 ?
  详细解决方案

还是乱码有关问题啊 ?

热度:4004   发布时间:2013-02-25 21:07:31.0
还是乱码问题啊 ???
jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String te=request.getParameter("te");
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
   <table> <TR><td>我是中文 </td></TR>
   </table><br>-----------<%=te%>
    <form action="Testservlet" method="get">
    <table>
     <tr>
       <td>
         <input name="te" type="text" value=""/>
         <input name="su" type="submit" value="提交"/>
       </td>
     </tr>
    </table>
    </form>
  </body>
  <table>
   <tr>
     <td>
     ___${te}
     </td>
   </tr> 
  </table>
</html>


servlet:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletExceptionIOException {

PrintWriter out = response.getWriter();
request.setCharacterEncoding("UTF-8");
// response.setCharacterEncoding("UTF-8");
    String te=request.getParameter("te");
//     te=new String(te.getBytes("ISO-8859-1"),"GBK");
    System.out.println(te+"/////");
request.setAttribute("te",te);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}


但是 jsp还是显示乱码啊?
jsp提交前的:



jsp提交后就乱码了:






------最佳解决方案--------------------------------------------------------
嗯,这问题写过滤器看好使不、

------其他解决方案--------------------------------------------------------
 过滤器 可以实现,    或者 request.setCharacterEncoding("UTF-8");
                          response.setCharacterEncoding("UTF-8"); 放在方法内头两行
------其他解决方案--------------------------------------------------------
       PrintWriter out = response.getWriter();         
request.setCharacterEncoding("UTF-8"); //  response.setCharacterEncoding("UTF-8");         
String te=request.getParameter("te"); //   te=new String(te.getBytes("ISO-8859-1"),"GBK");         
System.out.println(te+"/////"); 

你这里只是设置了request.setCharacterEncoding为UTF8,但实际的数据却是GBK的,而你并没有对GBK转换成UTF8的数据,所以返回之后自然就乱了.浏览器检测到你实际返回的其实是GBK,由于浏览器的设置使用了自动选择编码,因此就自动切换成了GBK的编码,造成原来UTF8的数据变成乱码了.
  相关解决方案