1、 定义和用法

 decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

 从W3C的定义和用法来看,两者没有什么区别,但是两者的参数是有区别的:decodeURI(URIstring)        //URIstring    一个字符串,含有要解码的 URI 或其他要解码的文本。
decodeURIComponent(URIstring)       //URIstring   一个字符串,含有编码 URI 组件或其他要解码的文本。

2、使用中区别

区别:encodeURIComponent和decodeURIComponent可以编码和解码URI特殊字符(如#,/,¥等),而decodeURI则不能。encodeURIComponent('#')
"%23"
decodeURI('%23')
"%23"
decodeURIComponent('%23')
"#"
encodeURI('#')
"#"

可以看出encodeURI和decodeURI对URI的特殊字符是没有编码和解码能力的,实际项目中我们一般需要get请求的方式在地址栏中拼接一些参数,但是参数中如果出现#,/,&这些字符,

就必须要用decodeURIComponent了,

不然这些特殊字符会导致我们接收参数的错误

假如我们要传一个code字段到http://www.xxx.com,值为20180711#abcvar codeVal = encodeURI('20180711#abc');
var url = 'http://www.xxx.com?code=' + codeVal;
console.log(url);
http://www.xxx.com?code=20180711#abc
http://www.xxx.com接收参数

location.search  //"?code=20180711";
decodeURI("?code=20180711")  //"?code=20180711"

这时候我们拿到的code参数明显是错误的,被特殊字符#截断了,下面我们来看用decodeURIComponent方法:var codeVal = encodeURIComponent('20180711#abc');
var url = 'http://www.baidu.com?code=' + codeVal;
url;
"http://www.baidu.com?code=20180711%23abc"
http://www.xxx.com接收参数
location.search  //"?code=20180711%23abc"
decodeURIComponent("?code=20180711%23abc")  //"?code=20180711#abc"

转载于:https://www.cnblogs.com/Model-Zachary/p/11193556.html

javascript中编码与解码的decodeURI()、decodeURIComponent()区别相关推荐

  1. Javascript 中 atob 方法解码中文字符乱码问题

    解决 Javascript 中 atob 方法解码中文字符乱码问题 由于一些网络通讯协议的限制,你必须使用 window.btoa() 方法对原数据进行编码后,才能进行发送.接收方使用相当于 wind ...

  2. java中的解码和编码_关于java中编码和解码(一)

    关于java中编码和解码(一) 关于java中编码和解码(一) 计算机中所能表示的字符仅仅为0-255个,平时我们用到的语言太多,计算机本身根本无法表示.必须将我们的不同的语言转换为计算机所能理解的语 ...

  3. java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别

    JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...

  4. html5有foreach吗,JavaScript中的map()和forEach()有什么区别?

    来源:https://medium.com/better-programming,作者:Moon,翻译:公众号<前端全栈开发者> JavaScript中一些最受欢迎的功能可能是map和fo ...

  5. JavaScript中的name和classname有什么区别

    JavaScript 中的 name 和 className 有如下区别: name 属性通常用于表示 HTML 元素的名称,如表单元素中的 input 元素.它可以用于给服务器发送数据. class ...

  6. JavaScript字符集编码与解码

    一.字符集 1)字符与字节(Character) 字符是各种文字和符号的总称,包括乱码:一个字符对应1~n个字节,一字节对应8位,每位用0或1表示. 2)字符集(Character Set) 字符集是 ...

  7. 前端 javascript 字符编码与解码

    前端 javascript 开发过程中, 有时候会遇到字符串的编码和解码. 面对眼花缭乱的js原生方法, 到底如何选择总是很头大, 在此对常用方法做个小结. escape & unescape ...

  8. 解决 Javascript 中 atob 方法解码中文字符乱码问题

    转载地址:http://blog.sqrtthree.com/2015/08/29/utf8-to-b64/ 首先, 为什么要编码? 由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就 ...

  9. [译]JavaScript中的属性:定义和赋值的区别

    原文:http://www.2ality.com/2012/08/property-definition-assignment.html 你知道吗?定义一个属性和为一个属性赋值是有区别的.本文解释了两 ...

最新文章

  1. 魔与道的反复较量 反垃圾邮件技术
  2. 计算机网络 网络设备命令 数据链路层解析
  3. MyEclipse调试过程中遇到一个奇怪的问题
  4. 任务和特权级保护(四)——《x86汇编语言:从实模式到保护模式》读书笔记35
  5. 【转】1.1异步编程:线程概述及使用
  6. part01.04 事件
  7. 蚂蚁金服招聘-高级数据技术工程师、大数据研发工程师/专家
  8. 运行MINGW时遇到缺少.dll
  9. http报文格式详解!
  10. Response.AddHeader使用实例
  11. 技术笔记:.Net全套就业班视频教程——数据库
  12. 如何判断欠拟合、适度拟合、过拟合
  13. iptables SNAT 和DNAT的转化配置实验
  14. php获取汉字的首字母,PHP获取汉字的首字母
  15. Conlletion集合框架总结大全
  16. JGG | 中科院微生物研究所王军团队发现肠系膜淋巴系统可能为肠-肝轴第二通路...
  17. mysql丢失数据,mysql数据丢失问题讨论(转)
  18. 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans
  19. CODESYS自动化仿真软件如何与EtherNet IP工业RID读写器|读卡器CK-RF102AN-E01联机工作
  20. git 和 linux、_linux和git拔掉

热门文章

  1. js 加总数组中某一列_JS数组求和的常用方法实例小结
  2. 02-CSS基础与进阶-day9_2018-09-12-20-29-40
  3. 【Java】NIO中Selector的select方法源码分析
  4. IDEA项目搭建四——使用Mybatis实现Dao层
  5. 试述大数据对思维方式的重要影响
  6. 使用UIWebView载入本地或远程server上的网页
  7. [bzoj3532][Sdoi2014]Lis
  8. 利用IDA Pro反汇编程序
  9. CentOS中通过NAT连接网络
  10. Linux压缩和解压缩命令汇总(tar命令汇总)