URL重写中的中文参数问题

在做搜索功能时,需要输入关键字,如果搜索出来的结果很多,又需要分页。这里用URL重写技术(即href="?keyword=关键字&page=分页数"),就涉及到了传递中文关键字的问题。

我也是在网上找了很多,才找到了一个合适的办法。

在前台JSP页面中,这里就需要给超链接编码,其实也可以说只是给中文参数编码,不过我是对整个超链接编码。编码要进行两次,使用Javascript自带的encodeURI()方法。所以就是用javascript来操作,代码如下:

 1 <script>
 2     $(function(){ //这里用的JQuery语法
 3         $("a.class1").each(function(i){ // 对所有类名是class1的<a>标签依次进行下面的操作
 4             var url = $(this).attr("href"); // 获取这个<a>标签的href值,就是url啦
 5             url = encodeURI(url); // 进行第一次编码
 6             url = encodeURI(url); // 进行第二次编码
 7             $(this).attr("href", url); // 将编码后的url,设置为这个<a>标签的href值。这样,这个<a>标签的href,即url就是经过了两次编码的
 8         });
 9     });
10 </script>

前台的URL经过两次编码后,用户再点击这个<a>标签的时候,传递到浏览器的值就能正常显示中文了。

这个URL通常会再调用Servlet中的方法,所以在后台Servlet中还需要进行解码,代码很简单,如下所示:

1 String keyword = request.getParameter("keyword"); // 获取关键字keyword,只有关键字是中文,分页数是数字,不受这个问题影响
2 try{
3     keyword = java.net.URLDecoder.decode(keyword, "utf-8"); // 进行解码
4 }catch(Exception e){
5     e.printStackTrace();
6 }
7 .... // 后面就是正常使用这个keyword关键字了,比如执行sql查询,正常使用即可。
原文地址:https://www.cnblogs.com/czp2bconfident/p/9118809.html