javascript学习指南_Javascript中encodeURI与encodeURIComponent区别

时间:2018-01-17  来源:文本特效  阅读:

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+ "
");

var a=encodeURI(tst);
var b=decodeURI(a);
document.write(a+ "
");
document.write(b+ "
");

var c=encodeURIComponent(tst);
var d=decodeURIComponent(c);
document.write(c+ "
");
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可能是直接使用的。

javascript学习指南_Javascript中encodeURI与encodeURIComponent区别

http://m.bbyears.com/wangyetexiao/38571.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新