Linux下pager-taglib分页中文搜索乱码
来源:互联网 发布:网络摄像头搜不到ip 编辑:程序博客网 时间:2024/05/18 01:56
【问题描述】本人平时在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,搜索分页正常。
- Linux下pager-taglib分页中文搜索乱码
- pager-taglib 分页乱码。解决方法。
- pager-taglib分页中文乱码
- pager-taglib分页中文乱码原理解析
- 分页pager-taglib使用指南
- pager-taglib分页实现
- pager-taglib分页
- java分页 pager-taglib
- pager-taglib实现分页
- Pager-taglib分页
- Pager-taglib分页标签
- Pager-taglib分页
- pager-taglib分页优化
- pager-taglib分页工具
- 分页pager-taglib使用指南
- Pager-taglib分页使用
- java分页 pager-taglib
- Pager-taglib分页
- 242. Valid Anagram
- iOS最全性能优化(上)
- Android开源框架之图片加载器ImageLoad的用法
- 表单重复提交
- Android常用标记
- Linux下pager-taglib分页中文搜索乱码
- 马踏棋盘的贪心算法 递归算法 非递归算法实现
- [LeetCode]27. Remove Element
- 如何给产品做减法
- 九度题目1056最大公约数
- js提交表单kindeditor编辑器内容无法获取
- 浏览器兼容之JavaScript篇——已在IE、FF、Chrome测试
- 295. Find Median from Data Stream&数据流中的中位数
- LeetCode Recover Binary Search Tree