• url中文参数解决方案


    首先,弄清楚为什么url传递中文会转码或者乱码,以及http头

    contentType="text/html; charset=GBK"

    的作用。

    html代码会经过web服务器,浏览器处理,所以造成转码或者乱码的原因,可能涉及到:页面本身的设置、web服务器的设置、浏览器的设置。

     

    在动态页面,比如jsp、php中,可以设置

    contentType="text/html; charset=GBK"

    在服务器,比如apache中可以在web.xml中设置

    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" URIEncoding="utf-8"/>

    在Spring、Struts等插件中还可以配置页面过滤器。

    在IE等浏览器中可以设置强制的url编码规则。

     

    但是按照网络标准RFC-1738规定,一般的浏览器都是以utf-8或者gbk等方式来编码url的。

     

    解决乱码要从根源入手,根源是什么?刚才我说了,处理html的顺序是:页面本身的设置、web服务器的设置、浏览器的设置。那么最有效的方式就是照顾到浏览器。

     

    在web.xml或者Spring、Struts等中我们都不用管,因为他们是间接的方式,不一定其作用。

     

    怎么照顾到浏览器?就是将url的编码规则自己指定。接收的时候自己解码。

     

    制定url编码规则很简单,就是将url先用utf-8编码,编码结果是英文、数字、百分号等符合网络标准RFC-1738的格式。

     

    编码的方法可以在服务器端的程序中进行,但那样效率太低。javascript已经做好了这方面的工作,只需要调用encodeURI()或者encodeURIComponent()函数即可。

     

    要在href、src等处调用javascript的函数,方法如下:

    一、在HTML里可以通过"javascript:"方式调用JavaScript的函数或方法,如下所示:
    <html>
     <head>
      <title>使用“javascript:”</title>
     </head>
     <body>
      <a href="javascript:alert('您点击了这个超链接')">请点我</a>  
     </body>
    </html>

    二、  "javascript:"不但可以调用JavaScript的方法,也可以调用用户自定义的函数,如下代码所示:
    <html>
     <head>
      <title>使用“javascript:”</title>
      <script language="javascript" type="text/javascript">
       <!--
        function OnclickLink()
        {
         alert("您点击了这个按钮");
        }
       -->
      </script>
     </head>
     <body>
      <a href="javascript:OnclickLink()">请点我</a>
     </body>
    </html>

    三、与事件结合
    <html>
     <head>
      <title>与事件相结合</title>
      <script language="javascript" type="text/javascript">
       <!--
        function OnMouseOverLink()
        {
         alert("您的鼠标从第一个超链接上划过");
        }
       -->
      </script>
     </head>
     <body>
      <a href="#" onmouseover="OnMouseOverLink()">请将鼠标放在上面</a><br>
      <a href="#" onclick="javascript:alert('您点击了第二个超链接')">请点我</a>  
     </body>
    </html>

     

    传递中文URL的解决方案如下:

    <a href="javascript:location=encodeURI('/zollty/search.jsp?form_project=金海湾');">金海湾</a>

    点击超链接时实际上要激发javascript函数才其作用,我们不能写成如下形式:

    <a href='encodeURI("/zollty/search.jsp?form_project=金海湾")'>金海湾</a>

    因为上面的写法在未点击超链接时,href的值就是包含javascript代码的原原本本的字符串,点击后才执行encodeURI()函数,而超链接会以url为“encodeURI("/zollty/search.jsp?form_project=金海湾”来跳转,显然是找不到这个页面的。

     

    最好是写成如下形式:

    <a href="javascript:void(0)" onclick="location.href=encodeURI('/zollty/search.jsp?form_project=金海湾');">金海湾</a>

    其含义更加明了。

     

    另外就是表单中提交中文的问题,通过设置页面的

    contentType="text/html; charset=GBK"

    就可以解决。


     



  • 相关阅读:
    数据结构之单链表及其函数算法
    数据结构之KMP算法next数组
    FastDFS的简单使用
    富文本编辑器kindeditor的使用
    SpringSecurity的简单入门
    Dubbo+zookeeper实现单表的增删改查
    windows批量删除当前目录以及子目录的所有空文件夹
    Echarts的简单入门
    基于JAX-RS规范的webService入门
    RESTFull开发风格
  • 原文地址:https://www.cnblogs.com/jarl/p/5893039.html
Copyright © 2020-2023  润新知