写自定义的过滤器时切记要注意编码的问题
在写自定义的过滤器(filter)的时候,一定要注意项目的编码格式问题,因为客户端向服务端发送的一个request,默认编码书上貌似说的是iso-8859-1,而如果页面编码格式不是iso-8859-1(我一般是设置为utf-8)的话,就会出现乱码问题,一直找原因都找不到,后来才发现是在过滤器中没有设置编码格式,设置一下编码格式就解决了!
request.setCharacterEncoding("utf-8");
但是也有人这样说:
客户端发送的是请求头,而参数会根据你当前页面的编码方式进行编码之后发送给服务器
如果是utf-8,那就会根据utf-8进行编码发送给服务器.
如果是jsp文件可以用page指令的contentType属性来设置显示的编码方式.
html文件可以利用<meta>标签模拟请求消息头
而tomcat服务器是默认采用iso-8859-1来对请求消息进行解码的,如果前后不一就很容易出现乱码问题.如果是post请求只需要设置request.setCharacterEncoding()与请求消息编码前的编码方式一样就可以.
如果是utf-8,那就会根据utf-8进行编码发送给服务器.
如果是jsp文件可以用page指令的contentType属性来设置显示的编码方式.
html文件可以利用<meta>标签模拟请求消息头
而tomcat服务器是默认采用iso-8859-1来对请求消息进行解码的,如果前后不一就很容易出现乱码问题.如果是post请求只需要设置request.setCharacterEncoding()与请求消息编码前的编码方式一样就可以.
如果是get请求,tomcat默认的是用iso-8859-1来进行解码,此时request.setCharacterEncoding()不起作用,可以在tomcat的server.xml的Connector元素的useBodyEncodingForURI="true"使得起作用
所以具体的情况也不太了解,总之以后再自定义filter的时候切记要设置request编码格式