javascript中编码与解码的decodeURI()、decodeURIComponent()区别
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()区别相关推荐
- Javascript 中 atob 方法解码中文字符乱码问题
解决 Javascript 中 atob 方法解码中文字符乱码问题 由于一些网络通讯协议的限制,你必须使用 window.btoa() 方法对原数据进行编码后,才能进行发送.接收方使用相当于 wind ...
- java中的解码和编码_关于java中编码和解码(一)
关于java中编码和解码(一) 关于java中编码和解码(一) 计算机中所能表示的字符仅仅为0-255个,平时我们用到的语言太多,计算机本身根本无法表示.必须将我们的不同的语言转换为计算机所能理解的语 ...
- java两字符串是否相等_Java与JavaScript中判断两字符串是否相等的区别
JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...
- html5有foreach吗,JavaScript中的map()和forEach()有什么区别?
来源:https://medium.com/better-programming,作者:Moon,翻译:公众号<前端全栈开发者> JavaScript中一些最受欢迎的功能可能是map和fo ...
- JavaScript中的name和classname有什么区别
JavaScript 中的 name 和 className 有如下区别: name 属性通常用于表示 HTML 元素的名称,如表单元素中的 input 元素.它可以用于给服务器发送数据. class ...
- JavaScript字符集编码与解码
一.字符集 1)字符与字节(Character) 字符是各种文字和符号的总称,包括乱码:一个字符对应1~n个字节,一字节对应8位,每位用0或1表示. 2)字符集(Character Set) 字符集是 ...
- 前端 javascript 字符编码与解码
前端 javascript 开发过程中, 有时候会遇到字符串的编码和解码. 面对眼花缭乱的js原生方法, 到底如何选择总是很头大, 在此对常用方法做个小结. escape & unescape ...
- 解决 Javascript 中 atob 方法解码中文字符乱码问题
转载地址:http://blog.sqrtthree.com/2015/08/29/utf8-to-b64/ 首先, 为什么要编码? 由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就 ...
- [译]JavaScript中的属性:定义和赋值的区别
原文:http://www.2ality.com/2012/08/property-definition-assignment.html 你知道吗?定义一个属性和为一个属性赋值是有区别的.本文解释了两 ...
最新文章
- 魔与道的反复较量 反垃圾邮件技术
- 计算机网络 网络设备命令 数据链路层解析
- MyEclipse调试过程中遇到一个奇怪的问题
- 任务和特权级保护(四)——《x86汇编语言:从实模式到保护模式》读书笔记35
- 【转】1.1异步编程:线程概述及使用
- part01.04 事件
- 蚂蚁金服招聘-高级数据技术工程师、大数据研发工程师/专家
- 运行MINGW时遇到缺少.dll
- http报文格式详解!
- Response.AddHeader使用实例
- 技术笔记:.Net全套就业班视频教程——数据库
- 如何判断欠拟合、适度拟合、过拟合
- iptables SNAT 和DNAT的转化配置实验
- php获取汉字的首字母,PHP获取汉字的首字母
- Conlletion集合框架总结大全
- JGG | 中科院微生物研究所王军团队发现肠系膜淋巴系统可能为肠-肝轴第二通路...
- mysql丢失数据,mysql数据丢失问题讨论(转)
- 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans
- CODESYS自动化仿真软件如何与EtherNet IP工业RID读写器|读卡器CK-RF102AN-E01联机工作
- git 和 linux、_linux和git拔掉