public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
HttpServletRequest httpreq = (HttpServletRequest)request;
HttpServletResponse httpresp = (HttpServletResponse)response; chain.doFilter(httpreq, httpresp);
}
String[] values = null;
while (it.hasNext()) {
key = it.next().toString();
values = (String[]) map.get(key);
for (int i = 0; i < values.length; i++) {
values[i] = new String(values[i].getBytes("ISO-8859-1"),"UTF-8");
}
}
你只是把request里面的参数的值取出来了,怎么再传回去覆盖原来的值呢,有什么函数吗?
这是过滤器,你在执行post和get请求的之前就被过滤到了,所以你不用担心把转好的值再赋值
追问我已经试过了,有种快疯了的感觉。。。。你把转码后的值放到values[]里面有何用呢,request里面存放的还是为转码的值啊。
追答你还没明白过滤器的作用机制
encoding
com.util.EncodingFilter
encoding
/*
你在web.xml中配置了过滤器了没有,没有配置是不起作用的
配置了啊
code
com.lovo.cq.shopping10_1.filter.UnicodeFilter
code
/*
com.lovo.cq.shopping10_1.filter.UnicodeFilter
你这个类确定是实现了filter接口吗,如果实现了,你在dofilter中打印一句话,调试一下
不好意思,不是过滤器的问题,是mysql数据库编码的问题,过滤器过滤之后的数据仍然是中文,我已经验证过了,不过还是谢谢你
本回答被网友采纳