escape、encodeURI和encodeURIComponent的区别及使用
编码
javascript中的编码函数有三种
escape(string)
encodeURI(string)
encodeURIComponent(string)
解码
相应的解码函数也有以下三种
unescape(string)
unencodeURI(string)
unencodeURIComponent(string)
以上三种编码函数都是将指定的字符串按照各自的方式转变为浏览器或脚本可识别的形式,常见于对汉字进行操作,避免出现乱码的情况
用法及区别
escape(string)
- 将字符串
string
转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对以下标点符号进行编码:-_./
- 例如
escape('汉字 你123abcABC'); //"%u6C49%u5B57%20%u4F60123abcABC"
escape('-_./'); //"-_./"
escape('"'); //"%22"
escape(":"); //"%3A"
- 说明
从以上结果中表明:escape(string)
除字母、数字以及一些特殊字符(-_./
)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为%u
开头的四位十六进制数(%u6C49
),英文标点符号被转换为%
开头的两位十六进制(%20
)
- 将字符串
encodeURI(string)
- 将字符串
string
转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对以下符号进行编码:-_.!~*'/();?:@&=+$,#
- 例如
encodeURI('汉'); //"%E6%B1%89"
encodeURI('汉字 你123abcABC'); //"%E6%B1%89%E5%AD%97%20%E4%BD%A0123abcABC"
encodeURI("-_.!~*'/();?:@&=+$,#"); //"-_.!~*'/();?:@&=+$,#"
encodeURI('"'); //"%22"
- 说明
从以上结果中表明:encodeURI(string)
除字母、数字以及一些特殊字符(-_.!~*'/();?:@&=+$,#
)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为三组%
开头的两位十六进制数(%E6%B1%89
),英文标点符号被转换为%
开头的两位十六进制(%20
)
- 将字符串
encodeURIComponent(string)
- 将字符串
string
转变为十六进制的转义序列,但不会对ASCII字符和数字进行编码,也不会对以下符号进行编码:-_.!~*'()
- 例如
encodeURIComponent('汉'); //"%E6%B1%89"
encodeURIComponent('汉字 你123abcABC'); //"%E6%B1%89%E5%AD%97%20%E4%BD%A0123abcABC"
encodeURIComponent("-_.!~*'()"); //"-_.!~*'()"
encodeURIComponent('"'); //"%22"
- 说明
从以上结果中表明:encodeURIComponent(string)
除字母、数字以及一些特殊字符(-_.!~*'()
)外,都会对其进行编码,区别在于,汉字和中文标点符号被转换为三组%
开头的两位十六进制数(%E6%B1%89
),英文标点符号被转换为%
开头的两位十六进制(%20
)
- 将字符串
总结
- 综上
escape(string)
不能用于对url进行编码,多用于返回字符的Unicode
编码encodeURI(string)
可以对整个url进行编码encodeURIComponent(string)
不能应用于整个url编码,多用于对地址后的参数值进行编码
escape、encodeURI和encodeURIComponent的区别及使用的更多相关文章
- JS中 escape, encodeURI 和 encodeURIComponent的区别
为避免Url字符串在传递过程中的乱码,我们一般需要对字符串进行处理. 在Javascript中实现此功能的全局对象有3个,分别是:escape(), encodeURI() 和 encodeURI ...
- escape encodeURI和encodeURIComponent的区别
escape(与之对应->unescape) escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式 ...
- escape(), encodeURI()和encodeURIComponent()(转)
escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法,而他们之间的异同却困扰了很多的Javascript初学 ...
- encodeURI与encodeURIComponent的区别
webservice输出时选择的格式与Content-Type报文头有关 encodeURI与encodeURIComponent的区别:后者会将URI进行编码(包括"://")
- Javascript中escape(), encodeURI()和encodeURIComponent()之精析与比较
escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法,而他们之间的异同却困扰了很多的Javascript初学者, ...
- 深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- escape、encodeURI和encodeURIComponent的区别
1.简单解释 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读. 编码之后的效果是%XX或者%uXXXX这种形式. 其中 ASCII字母. ...
- Javascript中escape()、encodeURI()、encodeURIComponent()的区别
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decod ...
- js 中escape,encodeURI,encodeURIComponent的区别
escape:方法不能能够用来对统一资源(URI)进行编码,对其编码应使用encodeURI和encodeURIComponent encodeURI:encodeURI ()方法返回一个编码的 UR ...
随机推荐
- Java 最常用类(前100名)来自一万个开源项目
大部分的 Java 软件开发都会使用到各种不同的库.近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库,也有第三方库.每个类在同一个 ...
- panda库2
>>> a=pd.Series([1,2],index=['a','b']) >>> a a 1 b 2 dtype: int64 >>> b=p ...
- Hibernate第三篇【主配置文件、映射文件、复合主键映射】
前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文 ...
- Oracle DBA 常用查询
1. 查询系统所有对象 select owner, object_name, object_type, created, last_ddl_time, timestamp, statusfrom db ...
- 深入理解String的关键点和方法
String是Java开发中最最常见的,本篇博客针对String的原理和常用的方法,以及String的在开发中常见问题做一个整体性的概括整理.因为之前对String的特性做过一些分析,所以不在详细描述 ...
- Count(*), Count(1) 和Count(字段)的区别
1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的 ...
- 用ES6巧妙的解决传统面试中的算法小问题!
最近自己也在准备面试,在复习算法的时候,机智的用了一波ES6.一起来瞧瞧吧! 1.数组的去重 var arr=str.split(''); for(var i=0;i<arr.length-1; ...
- .NET十年回顾
一. 引子 从我还是编程菜鸟时起,.NET就从来没让我失望过.总是惊喜不断. 当年我第一个项目是做个进销存.用的Winform.当时我是机电工程师.编程只是业余心血来潮而已. .NET的低门槛.V ...
- E. Fish (概率DP)
E. Fish time limit per test 3 seconds memory limit per test 128 megabytes input standard input outpu ...
- MySQL之增删改查
前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. 前提:在进行" ...