日期:2014-05-18  浏览次数:20798 次

servlet传中文显示乱码,请教。
本帖最后由 dx8439 于 2013-08-17 09:56:55 编辑
servlet传中文给jsp页面显示不出来,jsp页面像servlet提交一个叫name的文本值,servlet接收到后进行数据库操作,再把这个值返回给jsp页面,但是我从servlet打印出来的是中文,返回页面后中文显示不出来,用了getBytes("iso-8859-1"),"gb2312"方法也不行,请教大家。下面是页面和servlet。
jsp:
<%@ page language="java" import="java.util.*,com.bean.Bean" pageEncoding="UTF-8"%>
<%@ page contentType="text/html; charset=GBK" %>
<title>a.jpg</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form name="add" method="post" action="AddServlet">
<table align="center" border="0" width="995">
<tr><td><%String n=request.getParameter("a");%>
String name = new String(n.getBytes("iso-8859-1"),"gb2312");</td>

<td><input type="text" name="name" value="<%=name%>"></td>
</tr>
</table>
</form>


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

response.setContentType("text/html; charset=GBK");
request.setCharacterEncoding("GBK");

Bean b=new Bean();
rb.setName(request.getParameter("name"));
…………
                String b=request.getParameter("name");
response.sendRedirect("a.jsp?a="+b);

}
JSP Servlet

------解决方案--------------------
Tomcat的配置文件中默认传输字符格式的问题。。
详见:http://bbs.csdn.net/topics/390372335
------解决方案--------------------
servlet代码

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

response.setContentType("text/html");
PrintWriter out = response.getWriter();

String b = request.getParameter("name"); 

byte[] bytes = b.getBytes("iso-8859-1");