美文网首页
Java程序员遇上字符乱码4-Url编解码使用演示

Java程序员遇上字符乱码4-Url编解码使用演示

作者: _Danniel_ | 来源:发表于2017-08-21 17:31 被阅读0次

    本节我们来演示 Js中Url编码解码。

    使用场景:

        假如我们在浏览器地址栏输入发起这个请求:

        http://localhost:8080/examples/servlets/servlet/test?n=?&&y==

        我们希望server能够这样处理的:n =?&, y ==。

        如果我们就这样按下enter,你会发现 浏览器并不会对?&= 编码 就发送出去了,因为它也无法识别哪个=、?、&号是用来分割的啊。浏览器无法识别,server当然也难以识别(报错)啊。

        那么我们应该如何解决这类问题呢?

        这就是为何Js会提供一个window.encodeUri()和window.encodeUriComponent()给我们。  

        如下:

       (1)当是页面的超链接时:

    <script language="javascript">

    document.write('<a href="http://localhost:8080/examples/servlets/servlet/test?n='+encodeURIComponent("?&")+ '&y=' +encodeURIComponent("=")+' ">退出</a>');

    </script>

          当然,还有参数值就是Url的情况:

    <script language="javascript">

    document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a& gt;');</script>

         (2)当是form表单时,应该转用js提交。提交前现将<input/>和<textArea/>中的内容先url编码。

          常 见函数:【无论什么编码的网页,下面的函数都是基于Utf-8进行Url编码解码

             window.encodeURIComponent():

                     不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

             window.encodeURI():

                     不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

            window.escape():[过时快淘汰,不建议使用]

                     不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

           由上,window.encodeURIComponent() 会比window.encodeURI() 编码得更彻底。

           从使用的角度来说:

           encodeURI主要用于直接赋值给地址栏时候:

                 location.href=encodeURI("http://lzx.com/");

           而encodeURIComponent主要用于url的query参数:

                location.href="http://huangjacky.com/test.php?a="+encodeURIComponent("罗志晓");

    相关文章

      网友评论

          本文标题:Java程序员遇上字符乱码4-Url编解码使用演示

          本文链接:https://www.haomeiwen.com/subject/tgkhdxtx.html