`

JavaScript中有三个可以对字符串编码的函数

 
阅读更多

转自: http://www.cnblogs.com/qiantuwuliang/archive/2009/07/19/1526687.html 

 

 

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中常见的字符串操作函数及用法

    字符串分割,即将一个字符串分割为多个字符串,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的简单编码机器和解码机器二合一

    js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数: unescape,decodeURI,decodeURIComponent 。 下面简单介绍一下它们的区别 1 escape()函数 定义和...

    javascript加解密字符串

    通过这个"javascript加解密字符串"项目,你可以深入学习JavaScript中的字符串处理、加密解密原理以及实际应用,提高你的Web安全意识和技术能力。同时,查阅并分析`js编码.html`和`js解码.html`的代码将有助于理解和...

    下载编码的问题字符串转URI

    在 JavaScript 中,有三个可以对字符串编码的函数,分别是 escape()、encodeURI()、encodeURIComponent(),每个函数都有其特定的用途和应用场景。 1. escape() 函数 escape() 函数可以对字符串进行编码,这样就...

    javascript 判断是否GBK编码

    在JavaScript中,判断一个字符串是否属于GBK编码是一个常见的需求,特别是在处理中文字符集时。GBK是GB2312的扩展,包含了更多的汉字和其他字符,是Windows系统中广泛使用的中文编码标准。本篇将深入探讨如何通过...

    VB MD5加密中文字符串源代码,JS中文MD5算法

    JS中处理中文字符串的步骤与VB类似,需要先将字符串编码,然后调用MD5函数,最后将结果转换为十六进制字符串。在浏览器环境中,JS默认使用UTF-16编码,所以处理中文字符相对简单,但仍然需要注意编码一致性。 在...

    字符串操作大全

    5. **连接**:使用`+`操作符可以将两个字符串拼接在一起。 6. **复制**:`*`操作符可以用于重复字符串,如`str * n`表示str重复n次。 7. **查找与替换**:`find()`、`index()`、`replace()`等方法用于查找子串位置...

    js代码-一个字符串加密函数

    在JavaScript中,字符串加密函数是一种常见的安全实践,用于保护数据,特别是当数据在网络上传输时。这个主题涉及到JavaScript的核心知识,包括字符串操作、编码转换、以及可能涉及的加密算法。以下是对这个主题的...

    javascript处理中文base64编码

    在JavaScript中,Base64是一种常见的数据编码方式,它将任意二进制数据转换成ASCII字符串,便于在网络上传输。由于Base64编码是基于拉丁字母、数字、加号和斜线这64个字符,因此对于包含非ASCII字符(如中文)的数据...

    webview渲染HT ML标签字符串

    4. **CSS和JavaScript**:HTML字符串中可以包含CSS样式和JavaScript代码。CSS用于控制网页的样式,比如颜色、布局等。JavaScript则能为网页添加交互性,如按钮点击事件、动态效果等。WebView会执行HTML中的...

    JavaScript中文转拼音

    通过以上介绍,我们可以看出实现“JavaScript中文转拼音”的工具涉及到了字符编码、JavaScript字符串处理、HTML5交互以及第三方库的使用等多个技术点。在实践中,开发者需要结合具体需求,灵活运用这些知识,以创建...

    JAVASCRIPT对象与函数.pdf

    - `concat(string2, ..., stringX)`:连接多个字符串。 - `replace(oldStr, newStr)`:替换字符串中的旧子串为新子串。 - `slice(start, end)`:截取字符串的一部分并返回。 - `split(separator, limit)`:根据分隔...

    检查字符串是否为有效的字符串

    在编程领域,检查一个字符串是否为有效字符串是一个常见的任务,这通常涉及到对字符串内容、格式或结构的验证。本文将深入探讨如何在不同的上下文中定义“有效字符串”以及使用源码和工具进行验证的方法。 首先,...

    【ASP.NET编程知识】Asp.Net中的字符串和HTML十进制编码转换实现代码.docx

    这些函数可以在 JavaScript 中实现字符串和十六进制编码的转换。 四、ASP.NET 实践应用 在 ASP.NET 中,字符串和十六进制编码转换有很多实践应用。例如,在 KindEditor 图片上传的 ASP.NET 代码实例中,就需要使用...

    JavaScript进阶:JS的全局变量和全局函数.docx

    JavaScript的全局变量有三个特殊的预定义变量:`Infinity`表示无穷大,`NaN`(Not-a-Number)表示非数字值,`undefined`表示未定义的值。这些变量在全局作用域中都有特定的含义。 全局函数则是可以被整个程序范围内...

    javascript函数集锦

    在字符串处理方面,JavaScript提供了诸如`substring()`、`slice()`、`trim()`、`indexOf()`、`replace()`等函数,帮助我们对字符串进行截取、修剪、查找和替换操作。例如,`indexOf()`可以查找字符串中指定子串的...

    javascript常用函数大全(一)借鉴.pdf

    - `join()`:将数组的所有元素合并成一个字符串,用指定的分隔符连接。 - `length`:读取或设置数组的长度,用于获取或设置数组元素的总数。 - `reverse()`:反转数组中的元素顺序。 - `sort()`:对数组元素进行...

    经常用到的javascript验证函数收集.docx

    1. **IsStringNull(str)**: 这个函数用于判断一个字符串是否为空,包括`null`、`undefined`、空字符串`""`以及只包含空白字符(如空格、制表符或换行符)的情况。如果字符串经过`Trim()`函数去除两端空白后长度为0,...

Global site tag (gtag.js) - Google Analytics