分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

escape()、encodeURI()、encodeURIComponent()区别详解

发布时间:2023-09-06 01:06责任编辑:董明明关键词:暂无标签

前言

JavaScript中有三个可以对字符串编码的函数,分别是:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。


 

escape()和它们不是同一类

简单来说,escape()是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。 
编码之后的效果是%XX或者%uXXXX这种形式。 其中 ASCII字母、数字、@*/+ ,这几个字符不会被编码,其余的都会。 
最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL。

escape(‘编码‘) ?//"%u7F16%u7801"unescape(‘%u7F16%u7801‘) ?//"编码"

最常用的encodeURI()和encodeURIComponent()

对URL编码是常见的事,所以这两个方法应该是实际中要特别注意的。 
它们都是编码URL,唯一区别就是编码的字符范围,其中: 
encodeURI方法不会对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+’ 
encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*()’ 
所以encodeURIComponent比encodeURI编码的范围更大。

实际例子来说,encodeURIComponent会把http:// ?编码成 ?http%3A%2F%2F 而encodeURI却不会。encodeURI(‘https://www.baidu.com/‘) ??????????//"https://www.baidu.com/"encodeURIComponent(‘https://www.baidu.com/‘) ?//"https%3A%2F%2Fwww.baidu.com%2F"

 


最重要的,我该什么场合用什么方法

区别上面说的很清楚了,接下来从实际例子来说说把。 
1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。 
2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。 
3、当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。

var a = "http://blog.csdn.net/?ref=toolbar_logo&test=测试"escape(a) ?//"http%3A//blog.csdn.net/%3Fref%3Dtoolbar_logo%26test%3D%u6D4B%u8BD5"unescape("http%3A//blog.csdn.net/%3Fref%3Dtoolbar_logo%26test%3D%u6D4B%u8BD5")//"http://blog.csdn.net/?ref=toolbar_logo&test=测试"encodeURI(a) ?//"http://blog.csdn.net/?ref=toolbar_logo&test=%E6%B5%8B%E8%AF%95"decodeURI("http://blog.csdn.net/?ref=toolbar_logo&test=%E6%B5%8B%E8%AF%95")//"http://blog.csdn.net/?ref=toolbar_logo&test=测试"encodeURIComponent(a)//"http%3A%2F%2Fblog.csdn.net%2F%3Fref%3Dtoolbar_logo%26test%3D%E6%B5%8B%E8%AF%95"decodeURIComponent("http%3A%2F%2Fblog.csdn.net%2F%3Fref%3Dtoolbar_logo%26test%3D%E6%B5%8B%E8%AF%95")//"http://blog.csdn.net/?ref=toolbar_logo&test=测试"

escape()、encodeURI()、encodeURIComponent()区别详解

原文地址:http://www.cnblogs.com/xiabingbing/p/7447568.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved