zoukankan      html  css  js  c++  java
  • 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查询,正常使用即可。
  • 相关阅读:
    iOS应用崩溃日志分析
    iOS应用崩溃日志分析
    iOS 获取一个类的所有方法
    iOS 获取一个类的所有方法
    UVa 818Cutting Chains (暴力dfs+位运算+二进制法)
    UVa 1374 Power Calculus (IDA*或都打表)
    UVa 10603 Fill (暴力BFS+优先队列)
    HDU 1272 小希的迷宫 (并查集)
    HDU 1060 Leftmost Digit (数学log)
    UVa 1599 Ideal Path (两次BFS)
  • 原文地址:https://www.cnblogs.com/czp2bconfident/p/9118809.html
Copyright © 2011-2022 走看看