关于request编码问题编码乱码

tomcat服务器的编码没有设置   设置成utf-8和gbk都试过  问题没有解决 

web.xml中设置了过滤器   
<filter> 
<filter-name>encodingFilter</filter-name> 
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
<init-param> 
<param-name>encoding</param-name> 
<param-value>UTF-8</param-value> 
</init-param> 
<init-param> 
<param-name>forceEncoding</param-name> 
<param-value>true</param-value> 
</init-param> 
</filter> 

用的spring的过滤器 


代码中获取request对象 
获取其他参数正常  中文参数乱码 

request.queryString();  没有任何内容 


通过 
new String(request.getParameter("参数名").getBytes("iso-8859-1"), "gb2312"); 
new String(request.getParameter("参数名").getBytes("iso-8859-1"), "utf-8"); 
new String(request.getParameter("参数名").getBytes("iso-8859-1"), "gbk"); 
new String(request.getParameter("参数名").getBytes("utf-8"), "gbk"); 
new String(request.getParameter("参数名").getBytes("utf-8"),"gb2312"); 
request.setCharacterEncoding("gbk"); 

类的编码为utf-8 

都不成功 其他该用的方法都试过 就是不可以 

不过奇怪的是  如果我把这段代码直接写在jsp页面中可以正常显示 
jsp页面的编码为gb2312     request.setCharacterEncoding("gbk");   后可以正常获取参数 

<%@ page language="java" pageEncoding="gb2312"%> 

<% 
request.setCharacterEncoding("GBK"); 
String errMsg = request.getParameter("ErrMsg"); 
%> 

这样获取参数完全正常 

实在不知道原因在哪 


另外还做了一个测试   tomcat的编码不设置  应该就是默认的iso-8859-1 

项目设置spring的中文过滤器 

action中直接写  
new String(request.getParameter("参数名").getBytes("iso-8859-1"), "gbk"); 

就可以获取正确的中文 

转载请注明:http://www.xujin.org 或 http://www.virgocloud.com

猜你喜欢

转载自software-king.iteye.com/blog/2195554
今日推荐