编码

只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不经过编码直接用于 URL。

例如:搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码。

1、escape 和 unescape

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

编码:

escape('http://www.baidu.com?name=zhang@xiao@jie&order=1')
 //结果:"http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1" escape('张')
 //结果:"%u5F20"

解码:

unescape("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")
  //结果:"http://www.baidu.com?name=zhang@xiao@jie&order=1"
unescape("%u5F20")
  //结果:"张"

escape 与 unescape多用于单个字符串的编码,当浏览器对中文的支持不足时,可以对中文字符单独编码

2、encodeURI 和 decodeURI

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

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

编码:

encodeURI('http://www.baidu.com?name=zhang@xiao@jie&order=1')
  //结果:"http://www.baidu.com?name=zhang@xiao@jie&order=1"

解码:

decodeURI("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")
   //结果:"http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1"

3、encodeURIComponent 和 decodeURIComponent

原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码

编码:

encodeURIComponent('http://www.baidu.com?name=zhang@xiao@jie&order=1')
  //结果:"http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1"

解码:

decodeURIComponent("http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1")
  //"http://www.baidu.com?name=zhang@xiao@jie&order=1"

[转自]https://www.cnblogs.com/z-one/p/6542955.html

 

最新文章

  1. 【Win10开发】响应式布局——AdaptiveTrigger
  2. ie7 用 clearfix 清除浮动时遇到的问题
  3. webdriver 获取alert 提示no alert is active
  4. go语言常用函数:cap
  5. Oracle global database name与db link的纠缠关系
  6. Android Service使用拾遗[阿里工程师分享]
  7. 新的三种EBS类型解析
  8. Beta—review阶段成员贡献分
  9. 在同一个页面中加载多个不同的jQuery版本
  10. 用python实现远程复制 (scp + expect )
  11. Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 .
  12. POJ 3061 Subsequence(Two Pointers)
  13. Xamarin.Android
  14. Mysql索引基础
  15. erlang套接字
  16. Python之向日志输出中添加上下文信息
  17. java中使用springmvc实现下载文件
  18. tensorflow学习之(五)构造简单神经网络 并展示拟合过程
  19. shell 中的三种引号的作用
  20. 1.mysql安装

热门文章

  1. mysql 修改my.ini
  2. 传统.NET 4.x应用容器化体验(3)
  3. Python入门学习指南
  4. 全面了解Nginx到底能做什么
  5. 【LeetCode】54. 螺旋矩阵
  6. Requests方法 -- 参数关联
  7. Thinkphp大批量插入数据库的处理方法和速度对比
  8. SpringBoot之yaml语法及静态资源访问
  9. vscode配置及插件
  10. php cookie赋值使用