关于JSP 、 Servlet中文乱码问题, 方法差不多试完了 还是不行- -!

JSP页面1:

list=(List)request.getAttribute("operatorlist"); %>
用户名密码等级操作
修改用户   删除用户
添加用户

xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxx
GetOneUserServlet:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//response.setCharacterEncoding("utf-8");
OperatorService operatorService=new OperatorService();
System.out.println(request.getParameter("name"));
Operator operator=operatorService.findOne(request.getParameter("name"));
//request.getSession().putValue("updateoperator", operator);
//request.getSession().setAttribute("updateoperator", operator);
if (operator==null) {
System.out.println("operator==null");
}else {
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXX");
}
request.setAttribute("updateoperator", operator);
request.getRequestDispatcher("updateOperator.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request, response);

}如果修改的是JSP页面1中name为中文的记录在这里面的到的是乱码
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
JSP页面2:

用  户名:
密    码:
取消

xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
这个页面有时也会出现乱码- -!

  1. JSP 页面需要包含编码只定:
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    如果是html页面, 需要添加metadate:

  2. 确保文件保存的格式是UTF-8 编码:
    Eclipse 右键属性能看到

下来时GET和POST提交:
1. GET 提交需要配置tomcat/config/server.xml中的connector:
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>

  1. POST 提交: 需要添加一个Encoding的Filter: [code="java"]

public class EncodingFilter implements Filter {

protected String encoding = "UTF-8";


public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {        

    request.setCharacterEncoding(encoding);
    response.setCharacterEncoding(encoding);

    chain.doFilter(request, response);    
}

public void init(FilterConfig filterConfig) throws ServletException {       
    this.encoding = filterConfig.getInitParameter("encoding");   
}

public void destroy() {
    encoding = null;
}

}
[/code]

Web.xml配置:

[code="xml"]

SetCharacterEncoding
cn.com.dayang.common.web.EncodingFilter

encoding
UTF-8



SetCharacterEncoding
*

[/code]

关于Eclipse输出乱码:
Win系统可能存在这个问题, 检查一下eclipse的console输出是不是采用的GBK编码.

GBK试下!

jsp1 有
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

jsp2没有?

检查submit之后 servlet收到的是不是乱码

.jsp 文件的编码,修改为UTF-8 编码格式

直接用一个Filter搞定了。

有没有提交到数据库,有的话,看下数据库的编码是哪种的

也许是你的Eclipse工程编码和你的页面编码不一样导致的!

楼主,首先保证你的编码要统一,如页面里,数据库里,所有编码都要设置成utf8.
其次,你修改JSP页面1中name为中文的记录,用的是get传值的方法,这样会导致乱码。如果你使用的是tomcat容器,可以在server.xml里Connector中设置URIEncoding="UTF-8",这样get传参时会使用utf8编码,或者,在servlet接收name值时转一下编码,如:new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"),出现乱码无非那几种问题。

朋友,你的问题只要保证,页面,项目,tomcat的server.xml配置文件的编码设置成一样,问题就可以解决!