读书人

还是乱码有关问题啊 ?

发布时间: 2012-12-15 15:16:03 作者: rapoo

还是乱码问题啊 ???
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传的汉字显示不乱码,但是为什么静态的汉字会乱码啊??????

读书人网 >Java Web开发

热点推荐