request.setCharacterEncoding("UTF-8")这个编码设置的小问题

servlet设置好这个编码,在什么情况下起作用的?

一般我们都把这个设置在filter层设置,随着时间的流逝,就认为只要设置这个编码,容器就会响应的请求的数据按着设置好的编码执行。实际上错了,这个编码既然一般放在过滤器,还是有一定道理的。其实是再SERVLET处理请求之前,经过过滤器时以我们设置的编码对数据做了编码。如果没设置TOMCAT是按默认的ISO-8859-1编码。

如果业务中出现乱码,切记不要再其他位置随意的设置setCharacterEncoding,想反在业务中处理要使用new String(req.getParameters("xxxx").getBytes("iso-8859-1"), "gb2312");

以上过滤器类只能保证post提交方式能正确解码。get方式依然会出问题

转载于:https://my.oschina.net/u/593721/blog/183309

你可能感兴趣的:(java,开发工具,php)