乱码问题一直困扰新手,这个问题也最多被人讨论,我也不例外又遇到了。通常考虑的方向是:
页面编码:我使用的是UTF-8
过滤器:我使用request.setCharacterEncoding("UTF-8");但是在使用pager-taglib分页时,页面需要有一个模糊查询,然后分页参数也得有这个查询条件,于是问题就出现了。
输入中文,点击查询,无障碍查询出了列表,然后点击pager-taglib中的下一页,发现输入的中文条件已成了乱码,理所当然的查不出数据了。观看了网上视频,关于此问题的终极解决。
导入了pager-taglib的源码到项目中,由于源码优先lib中的jar包加载,于是直接修改源码中的PagerTag类中的addParam代码,将
value = java.net.URLEncoder.encode(value);
修改为
value = java.net.URLEncoder.encode(value,"UTF-8");重启后再查询,发现依然有问题,点下一页同样出现中文乱码。
设置断点,发现struts的action先接收是中文,然后是PagerTag类的addParam方法,将中文转化成了UTF-8编码。然后页面中下一页跳转按钮的地址就成了编码后的地址。使用FF浏览器查看是中文,也就是说编码是没有问题的,但为什么点击下一页后接收到的就是乱码呢?网上再查找,有童鞋说是容器的问题,于是按照提示修改了tomcat的server.xml的connector标签,增加了URIEncoding="UTF-8"。重启,发现问题解决。中文乱码考虑容器、页面、过滤器、数据库,这四个方面都得一致吗?
这样更改容器的配置,会影响其他项目的运行,如果我有一个项目是UTF-8,一个是GBK,那TOMCAT怎么配?难不成起两个TOMCAT不成?
请了解的童鞋和前辈给予指导。。