本来在项目中,公司封装的框架不应该出现这种问题,结果还是出现了,大概的查看了下项目中封装的Filter 没有问题
,可是传值到后台总是乱码,把自己能想到的方法都用了还是不行,于是到百度提问..可是回答都不尽人意,都是说什么
request.setCharacterEncoding("utf-8");
这个顶用就不用那么麻烦了...后来还是用的最古老的方法
String paremeter = new String(request.getParameter("paremeter ").getBytes("ISO-8859-1"),"utf- 8");
后来在网上找了一下,网上的方法还是比较多,找来总结一下,在以后再遇到的时候说不定用的上.
一般来说在jsp页面就要设置好页面编码 <%@ page language="java" pageEncoding="UTF-8"%
然后可以使用Filter 来进行过滤...
public class EncodeFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("utf-8");
arg1.setCharacterEncoding("utf-8");
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
创建这样的一个类以后再到web.xml中注册一下就能自动去拦截过滤了
<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>com.lovo.epet.util.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如上,这就是一个最简单的过滤器,使用过滤器的好处就是、避免每页都要写request.setCharacterEncoding("UTF- 8"),
如果导入了spring框架更简单,spring框架中有提供他封装好的过滤器。
还有就是说修改tomcat的server.xml文件,因为tomcat内部使用的iso8859-1的编码处理,中文就会出现乱码,要想影响这个编码则需要在server.xml的Connector节点下增加useBodyEncodingForURI="true"属性配置,即可控制tomcat对get方式的汉字编码方式。
还有就是说使用js提供的函数来进行一个解码,然后进行发送..这个试了一下没顶用,不知道是自己操作错误的原因还是什么造成.
目前就总结这几总,等以后发现了新的方法再新增上去。
--- tomcat的配置文件中
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" URIEncoding="UTF-8"/>
--在这里添加URIEncoding="UTF-8"/ 也可以修改... 一般都是项目在本地访问有问题 但是部署在其他地方出问题 就可以使用该方法