网站地图    收藏   

主页 > 前端 > javascript >

Javascript中encodeURI与encodeURIComponent区别

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 本文章来给大家详细介绍Javascript中encodeURI与encodeURIComponent使用方法与区别,有需要了解这两个函数的进入参考。...

encodeURI 方法

将文本字符串编码为一个有效的统一资源标识符 (URI)。

encodeURI(URIString)

必选的 URIString 参数代表一个已编码的 URI。

说明
encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。


encodeURIComponent 方法

将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。

encodeURIComponent(encodedURIString)

必选的 encodedURIString 参数代表一个已编码的 URI 组件。

说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码


一、encodeURI、encodeURIComponent概念比较
encodeURI —— 该函数不对 ASCII 字母和数字以及ASCII标点符号(包括- _ . ! ~ * ' ( ))进行编码,其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),也不会被转义。

encodeURIComponent —— 该函数也不对 ASCII 字母和数字以及ASCII标点符号(包括- _ . ! ~ * ' ( ))进行编码,其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),会被由一个或多个十六进制组成的转义序列替换。

decodeURI和decodeURIComponent是它们对应的解码函数,不再多说。下面看一下测试代码

二、encodeURI、encodeURIComponent测试代码
1、测试JS代码:

 代码如下 复制代码

<script type="text/javascript">
var tst="http://你的域名/My dir/?a=http://metsky.com/b&c=你好";
document.write(tst+ "<br />");

var a=encodeURI(tst);
var b=decodeURI(a);
document.write(a+ "<br />");
document.write(b+ "<br />");

var c=encodeURIComponent(tst);
var d=decodeURIComponent(c);
document.write(c+ "<br />");
document.write(d);
</script>

2、脚本输出:

 代码如下 复制代码

http://你的域名/My dir/?a=http://metsky.com/b&c='你好'

http://你的域名/My%20dir/?a=http://metsky.com/b&c='%E4%BD%A0%E5%A5%BD'

http://你的域名/My dir/?a=http://metsky.com/b&c='你好'

http%3A%2F%2F你的域名%2FMy%20dir%2F%3Fa%3Dhttp%3A%2F%2Fmetsky.com%2Fb%26c%3D'%E4%BD%A0%E5%A5%BD'

http://你的域名/My dir/?a=http://metsky.com/b&c='你好'

3、总结

留意一下上面输出中的红色部分,所以从表观上的解释(天缘自己理解*_*):

encodeURIComponent是把整个参数都当成一个Component处理了,认为你给我的东西后续使用时是“贴”在其它“标准”URI后面做参数值用的,而encodeURI则认为你就让我编码一个URI,这个URI可能是直接使用的。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论