JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。
下面简单介绍一下它们的区别
1 escape()函数
定义和用法
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
语法
escape(string)
参数 描述
string 必需。要被转义或编码的字符串。
返回值
已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
说明
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
2 encodeURI()函数
定义和用法
encodeURI() 函数可把字符串作为 URI 进行编码。
语法
encodeURI(URIstring)
参数 描述
URIstring 必需。一个字符串,含有 URI 或其他要编码的文本。
返回值
URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
3 encodeURIComponent() 函数
定义和用法
encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
语法
encodeURIComponent(URIstring)
参数 描述
URIstring 必需。一个字符串,含有 URI 组件或其他要编码的文本。
返回值
URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
说明
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
提示和注释
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。
4 总结:
通过对三个函数的分析,我们可以知道:escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
5 示例:
1 escape()
<script type="text/javascript">
document.write(escape("http://www.w3school.com.cn/") + "<br />")
document.write(escape("?!=()#%&"))
</script>输出:
http%3A//www.w3school.com.cn
%3F%21%3D%28%29%23%25%26
2 encodeURI()
<script type="text/javascript">
document.write(encodeURI("http://www.w3school.com.cn/")+ "<br />")
document.write(encodeURI("http://www.w3school.com.cn/My first/"))
document.write(encodeURI(",/?:@&=+$#"))
</script>输出:
http://www.w3school.com.cn/
http://www.w3school.com.cn/My%20first/
,/?:@&=+$#
对整个URL进行编码,而URL的特定标识符不会被转码。
3 encodeURIComponent()
例1:
<script type="text/javascript">
document.write(encodeURIComponent("http://www.w3school.com.cn/"))
document.write("<br />")
document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
document.write("<br />")
document.write(encodeURIComponent(",/?:@&=+$#"))
</script输出:
http%3A%2F%2Fwww.w3school.com.cn
http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F
%2C%2F%3F%3A%40%26%3D%2B%24%23
例2:<script language="javascript">document.write('
<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
对URL中的参数进行编码,因为参数也是一个URL,如果不编码会影响整个URL的跳转。
相关推荐
字符串分割,即将一个字符串分割为多个字符串,JavaScript 中给我们提供了一个非常方便的函数 `split()`: * `var myStr = "I,Love,You,Do,you,love,me"; var substrArray = myStr.split(","); // ["I", "Love", ...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。 javascript的简单编码机器和解码机器二合一
本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...
在JavaScript中,判断一个字符串是否属于GBK编码是一个常见的需求,特别是在处理中文字符集时。GBK是GB2312的扩展,包含了更多的汉字和其他字符,是Windows系统中广泛使用的中文编码标准。本篇将深入探讨如何通过...
通过这个"javascript加解密字符串"项目,你可以深入学习JavaScript中的字符串处理、加密解密原理以及实际应用,提高你的Web安全意识和技术能力。同时,查阅并分析`js编码.html`和`js解码.html`的代码将有助于理解和...
例如,可以使用`concat`函数来拼接两个字符串。这种方法相对直接且减少了代码复杂性,尤其是当需要频繁处理字符串操作时。 在Solidity的最新版本中,推荐使用`abi.encodePacked`或`keccak256`结合`abi.decode`方法...
通过循环遍历字符串中的每个字符,使用`charCodeAt()`方法获取字符的Unicode编码值。如果该值超出ASCII范围(即不在0~255之间),则认为该字符为Unicode字符,其长度计为2;反之,则长度计为1。最终累加得到总长度并...
字符串连接是常见的操作,可以使用加号(+)来拼接多个字符串,例如 `var longString = 'Long '+ 'long '+ 'long '+ 'string';`。这种方式也可以用来处理长字符串,使其在源代码中跨越多行。 JavaScript字符串还支持...
在 JavaScript 中,有三个可以对字符串编码的函数,分别是 escape()、encodeURI()、encodeURIComponent(),每个函数都有其特定的用途和应用场景。 1. escape() 函数 escape() 函数可以对字符串进行编码,这样就...
5. **连接**:使用`+`操作符可以将两个字符串拼接在一起。 6. **复制**:`*`操作符可以用于重复字符串,如`str * n`表示str重复n次。 7. **查找与替换**:`find()`、`index()`、`replace()`等方法用于查找子串位置...
2. **URL编码**:JavaScript的`encodeURIComponent`函数可以对字符串进行URL编码,但默认它只处理UTF-8编码。为了GBK编码的字符串能正确编码,需要先将GBK编码后的字节序列转换为 `%xx` 形式,这可以通过遍历字节...
在JavaScript中,字符串加密函数是一种常见的安全实践,用于保护数据,特别是当数据在网络上传输时。这个主题涉及到JavaScript的核心知识,包括字符串操作、编码转换、以及可能涉及的加密算法。以下是对这个主题的...
这三个函数都可以实现从字符串中提取指定部分的功能,但它们的参数和内部实现有差异: 1. slice()函数的语法是slice(start, end),其中start是起始位置(包括该位置的字符),end是结束位置(不包括该位置的字符)...
在JavaScript中,Base64是一种常见的数据编码方式,它将任意二进制数据转换成ASCII字符串,便于在网络上传输。由于Base64编码是基于拉丁字母、数字、加号和斜线这64个字符,因此对于包含非ASCII字符(如中文)的数据...
Base64是一种基于64个字符的编码方式,被广泛应用于电子邮件、网页和其他需要将二进制数据转换为文本格式的场景中。由于互联网传输的数据通常需要以ASCII文本形式发送,而ASCII字符集中只有128个字符,为了确保数据...
### URL的三个JS编码函数:`escape()`, `encodeURI()`, `encodeURIComponent()` 简介 在Web开发中,经常遇到的一个问题是URL传递中文字符时出现乱码的情况。为了解决这一问题,JavaScript提供了几种不同的编码方法...
JavaScript中的字符串编码函数是开发过程中处理URI(统一资源标识符)和URL(统一资源定位符)时的关键工具。本文将详细介绍三个主要的编码函数:`escape()`、`encodeURI()`和`encodeURIComponent()`,以及它们之间...
本文将详细解释JavaScript中对字符串编码的几种不同方式,以及它们的使用场景和区别。 首先,我们需要了解几个关键的字符串编码方法:`escape()`、`encodeURI()`和`encodeURIComponent()`。这三种方法虽然都用于...
此函数主要用于检查一个字符串中的所有字符是否完全相同。在实际应用中,这种需求常见于密码验证、数据校验等场景,例如:在用户设置密码时,系统可能需要确保密码不是由重复的单一字符组成,以增加密码强度。 **...
JS中处理中文字符串的步骤与VB类似,需要先将字符串编码,然后调用MD5函数,最后将结果转换为十六进制字符串。在浏览器环境中,JS默认使用UTF-16编码,所以处理中文字符相对简单,但仍然需要注意编码一致性。 在...