pager-taglib分页中文乱码原理解析
关于使用pager-taglib分页前端传递中文参数乱码问题的解决方案 1.重现问题 在web项目中有时会用到pager-taglib来作为分页的标签,如上图红色框标识所示,当我们需要把页面参数保持的时候我们会在<pg:param />标签中把参数进行传递。 如果你的页面编码为gb2312那这样写是没有问题的,但是如果你的页面编码是utf-8的话那就会出现乱码问题。我尝试了很多方法,编码过滤器,编码拦截器(struts2),传递 参数的时候进行编码然后后台进行解码,还有WEB(如TomCat等)应用服务器编码。还是觉得这些方法没有从根本上解决问题。既然是用pager-taglib标签进行分页,那我们就 去看看pager-taglib里面关于字符集编码的处理。 2.pager-taglib字符集处理源码 a.首先我们要准备一个pager-taglib-2.0的war包 b.然后我们把它解压 在WEB-INF下面的lib包下面有两个jar包 c.pager-src.jar这就是pager-taglib的源码包,我们打开它找到final void addParams(String name, Stringvalue)这个方法 上图标红的几行代码很容易就能看出URLEncoder.encode(value)方法就是在对传递的参数进行字符集编码处理,那具体是怎么处理呢? 我们继续跟进去看源码