问题描述:当使用传递参数时,在admin_userinfo_update.jsp页面中用request.getParameter("relname")发生中文乱码。
解决一(已验证):request.setCharacterEncoding("gb2312");
String str = request.getParameter("relname");
str=new String(str.getBytes("ISO-8859-1"),"gb2312");
注意编码格式一致:
解决二:
修改Tomcat配置Tomcat/conf/server.xml文件里的编码方式
1.更改服务器编码
connectionTimeout="20000"
redirectPort="8443" URIEncoding="GBK"/>
2.修改tomcat GET方式的编码
解决三:
在请求中的乱码问题,一般用filter来解决,直接写一个servlet实现Filter接口,实现方法doFilterimport java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 编码过滤器
* @author Administrator
*
*/
@SuppressWarnings("serial")
public class CharaterFilter extends HttpServlet implements Filter {
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
((HttpServletRequest) arg0).setCharacterEncoding("utf-8");
((HttpServletResponse) arg1).setCharacterEncoding("utf-8");
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
在web.xml文件中配置,配置如下:
charater
com.zyxs.filter.CharaterFilter
charater
/*
分析:
tomcat默认的编码格式iso-8859-1,request取值时编码格式变了→造成中文乱码
拓展:
1.超链接多参数传递 relname=&XXX=
2.Tomcat 配置 技巧