Linux下pager-taglib分页中文搜索乱码

【问题描述】本人平时在Windows编程部署,使用的pager-taglib-2.0.jar是maven自动下载的,如果分页的同时提供搜索框进行中文搜索没有问题。

后来,项目部署上线,环境是Unbuntu14.04LTS、nginx、tomcat8.0.30、jdk1.8,在中文搜索分页显示的页面中,搜索中文后,“上一页”、“下一页”等链接中的中文参数变成"?"。


【解决过程】

1、乱码多是由于各种对中文的编解码不一致导致的,按顺序如下:浏览器、js拦截、tomcat的conf.xml配置编码、项目中web.xml配置的编码拦截器、mysql编码,还有其他如页面编码、文件编码、项目编码等。按这个来一个一个排除后发现问题仍未解决。


2、仔细检查分页的链接,发现,输入中文点击搜索后的所有分页链接中,“首页”的链接的中文参数是正常的。感觉像发现了新大陆。。。果断上网搜索“pager-taglib 中文搜索 乱码”,出来的结果与我想的一样,官方提供的pager-taglib-2.0.jar会对参数进行编码,格式是System.getProperty("file.conecding")。代码如下:

com.jsptags.navigation.pager.PagerTag代码,调用java.net.URLEncoder.encode对参数进行编码。

<pre name="code" class="java">final void addParam(String name, String value) {
    name = URLEncoder.encode(name);
    value = URLEncoder.encode(value);
    ......

}


 

java.net.URLEncoder代码,根据获取的file.encoding对参数进行编码。

static{
    difltEncName = AccessController.doPrivileged(new GetPropertyAction("file.encoding");
}

public static String encode(String s){
    String str = null;
    try{
        str = encoding(s, dfltEncName);
    }catch(UnsupportedEncodingException e){
    }
    return str;
}


3、如上代码所示,只需将PagerTag.addParam的对参数编码的代码删掉即可。自己下了源包修改后,却不知道怎么编译,留坑。在线上更换了从网上下载的pager-taglib-2.0.jar,重新启动tomcat,搜索分页正常。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值