以前搞了很长时间一直没解决jsp pager-tablib查询带中文参数出现乱码的错误。今天花了相对较少的时间解决了很开心,原因和解决方法如下:
问题:
使用<pg:param name="key" />标签传递中文参数时,会有乱码。
原因:
因为它默认是用gb2312来对添加的参数进行编码,如果你的过滤器、jsp页面都是采用的gb2312就没有什么问题,如果你采用的是utf-8来编码,那么中文参数传递过程中就会出现乱码导致无法解析。
网上有很多解决办法,重新修改编译源代码是一种方法;
在com/jsptags/navigation/pager下面的PagerTag的addParam(String name, String value)中,它原本是采用的URLEncoding.encode(value)方式来对传递的参数进行编码的,修改成为 URLEncoding.encode(value, "UTF-8")后,替换掉原来jar包的这个class文件再重新打包并引入到项目中就可以了。
也以前也有人建议,加过滤器,修改服务器编码/jsp编码为一致,加URLEncoding都未解决,当时页面都是设置为utf-8 的,一直没搞定。
解决办法:
将JSP页面编码pageEncoding设置为GB2312,在web.xml中加中文过滤器,即可解决!
<!-- 解决中文问题 -->
<filter>
<filter-name>SetCharacterEncodingFilter</filter-