首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

还是乱码有关问题啊 ?

2012-12-15 
还是乱码问题啊 ???jsp:%@ page languagejava importjava.util.* pageEncodingUTF-8%%String

还是乱码问题啊 ???
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 ServletException, IOException {

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的数据变成乱码了.



把注释的编码转换反注释就行了.
[其他解释]
把项目编码也换成utf-8试试。
[其他解释]
te=new String(te.getBytes("utf-8"),"GBK");         

[其他解释]

引用:
PrintWriter out = response.getWriter();         
request.setCharacterEncoding("UTF-8"); //  response.setCharacterEncoding("UTF-8");         
String te=request.getParameter("te");……


我想问的是:
jsp传的汉字显示不乱码,但是为什么静态的汉字会乱码啊??????

热点排行