zoukankan      html  css  js  c++  java
  • javascript对url进行编码和解码

    这里总结下JavaScript对URL进行编码和解码的三个方法。

    为什么要对URL进行编码和解码

    只有【0-9[a-Z] $ - _ . + ! * ' ( ) ,】以及某些保留字,才能不经过编码直接用于URL,其他的字符如果不经过编码可能会导致各种各样的问题。

    很容易找到编码和解码的例子,比如在搜索引擎搜索的中文关键字,复制网址之后再粘贴会发现该URL已经被转码。

    escape()和unescape()

    原理:对除ASCII字母、数字、标点符号【@  *  _  +  -  .  /】以外的其他字符进行编码。

    编码:escape('http://www.baidu.com?name=yanggb@blog=yanggb')

    结果:"http%3A//www.baidu.com%3Fname%3Dyanggb@blog%3Dyanggb"

    编码:escape('杨冠标')

    结果:"%u6768%u51A0%u6807"

    解码:unescape('http%3A//www.baidu.com%3Fname%3Dyanggb@blog%3Dyanggb')

    结果:"http://www.baidu.com?name=yanggb@blog=yanggb"

    编码:unescape('%u6768%u51A0%u6807')

    结果:"杨冠标"

    encodeURI()和decodeURI()

    encodeURI()是Javascript中真正用来对URL编码的函数。

    原理:返回编码为有效的统一资源标识符 (URI) 的字符串,不会被编码的字符:【! @ # $ & * ( ) = : / ; ? + '】。  

    编码:encodeURI('http://www.baidu.com?name=杨冠标@blog=yanggb')

    结果:"http://www.baidu.com?name=%E6%9D%A8%E5%86%A0%E6%A0%87@blog=yanggb"

    解码:decodeURI('http://www.baidu.com?name=%E6%9D%A8%E5%86%A0%E6%A0%87@blog=yanggb')

    结果:"http://www.baidu.com?name=杨冠标@blog=yanggb"

    encodeURIComponent()和decodeURIComponent()

    原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

    编码:encodeURIComponent('http://www.baidu.com?name=杨冠标@blog=yanggb')

    结果:"http%3A%2F%2Fwww.baidu.com%3Fname%3D%E6%9D%A8%E5%86%A0%E6%A0%87%40blog%3Dyanggb"

    解码:decodeURIComponent('http%3A%2F%2Fwww.baidu.com%3Fname%3D%E6%9D%A8%E5%86%A0%E6%A0%87%40blog%3Dyanggb')

    结果:"http://www.baidu.com?name=杨冠标@blog=yanggb"

    "我从前相信,这世上有一个温暖的人,只为我悲喜,为我阻挡这世间的锋利。"

  • 相关阅读:
    Web网站架构演变—高并发、大数据
    企业级Nginx Web服务优化实战
    初始化mysql数据库时提示字符编码错误的解决办法
    linux下logrotate 配置和理解
    Centos 5.2下安装多个mysql数据库
    编译安装 mysql 5.5,运行 cmake报错Curses library not found
    Centos 5.5 编译安装mysql 5.5.9
    理解索引的基数
    centos下yum安装mysql5.6后,无法启动 MySQL Daemon failed to start
    如何从MySQL官方Yum仓库安装MySQL5.6
  • 原文地址:https://www.cnblogs.com/yanggb/p/12021441.html
Copyright © 2011-2022 走看看