首页 > 其他分享 >encodeURI和encodeURIComponent的区别

encodeURI和encodeURIComponent的区别

时间:2024-01-06 15:31:43浏览次数:26  
标签:编码 www http cnblogs 区别 encodeURIComponent com encodeURI

encodeURI和encodeURIComponent的区别_encodeURLComponent


一、区别:

encodeURI是对url中的查询字符串部分进行转义

encodeURIComponent对整个url进行转义,包括空格、英文冒号、斜杠等

至于decodeURI和decodeURIComponent,只要知道decodeURI和encodeURI是互逆操作,decodeURIComponent和encodeURIComponent是互逆操作就可以了


二、应用:

1.如果是简单的http地址,如 http://www.w3school.com.cn/My first/?uname=张三&pwd=123456,使用encodeURI编码就行,这样浏览器拿到编码(utf8)后的地址就能正常打开页面(现在大多数浏览器都会自动进行编码,ie11还不行)

2.如果是比较复杂的http地址,如 http://www.w3school.com.cn/My first/?newUrl=http地址

需要通过url传地址,然后跳转到新的地址,那这个要传递的地址(http地址)需要使用encodeURIComponent进行编码


应用场景

1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。

2、如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。

比如:

encodeURI("http://www.cnblogs.com/season-huang/some other thing");

编码后会变为

"http://www.cnblogs.com/season-huang/some%20other%20thing";

其中,空格被编码成了%20。但是如果你用了encodeURIComponent,那么结果变为

"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"

看到了区别吗,连 “/” 都被编码了,整个URL已经没法用了。

3、当你需要编码URL作为的参数的时候,那么encodeURIComponent是最好方法。

var param = "http://www.cnblogs.com/season-huang/"; //param为参数
param = encodeURIComponent(param);
var url = "http://www.cnblogs.com?next=" + param;
console.log(url) //"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"

看到了吧,参数中的 “/” 可以编码,如果用encodeURI肯定要出问题,因为后面的/是需要编码的。

标签:编码,www,http,cnblogs,区别,encodeURIComponent,com,encodeURI
From: https://blog.51cto.com/u_16492634/9127260

相关文章

  • 数据仓库、数据湖、湖仓一体的区别?
    https://www.cnblogs.com/miketwais/articles/data_lakehouse.html 数仓:存储结构化数据,基于指标需求,面向主题组织数据,协助经营者进行决策;数据湖:存储结构化,半结构化,非结构化,二进制数据,强调的是对于原始数据的存储,保留数据的完整性。随用随取。存储成本更低;湖仓一体:将数仓构建......
  • @Repository、@Component、@Service、@Controller之间的区别与联系
     @Repository、@Component、@Service、@Controller这些注解使我们开发过程中比较常用的一些注解,今天我们就一起了解一下他们之间的区别与联系。原文官网引用:在Spring2.0之前的版本中,@Repository注解可以标记在任何的类上,用来表明该类是用来执行与数据库相关的操作(即dao对象......
  • 请将鼠标悬停在下面的元素上,即可查看 2D 和 3D 转换之间的区别
    请将鼠标悬停在下面的元素上,即可查看2D和3D转换之间的区别:2Drotate3Drotatetransformcode<div><p>请将鼠标悬停在下面的元素上,即可查看2D和3D转换之间的区别:</p><style>#rotate2D,#rotate3D{width:80px;height:70px;color:white;......
  • swoole运行Master 进程、Reactor 线程、Worker 进程、Task 进程、Manager 进程的区别
    Master进程、Reactor线程、Worker进程、Task进程、Manager进程的区别与联系Master进程Master进程是一个多线程进程Reactor线程Reactor线程是在Master进程中创建的线程负责维护客户端TCP连接、处理网络IO、处理协议、收发数据不执行任何PHP代码将TCP客户......
  • 伪元素和伪类的区别和作用
    伪元素:在内容元素的前后插入额外的元素或样式,但是这些元素实际上并不在文档中生成。它们只在外部显示可见,但不会在文档的源代码中找到它们,因此称为“伪元素”。例如:p::before{content:'后面伪元素'}p::after{content:'前面伪元素'}//设置第一行样式p::first-l......
  • 如何区别随身WiFi板子是什么芯片
    新上车的朋友可以看看,中兴微的板子上面都有zxlc,高通骁龙的一般都会有骁龙字样,一般主芯片会大一点放了几张板子的图片,让大家区别一下。这个是中兴微一定要把屏蔽罩打开,才能看到这个是高通骁龙的410......
  • 策略迭代与多智能体系统:相似之处与区别
    1.背景介绍策略迭代和多智能体系统都是人工智能领域中的重要研究方向,它们在过去几年中得到了广泛的关注和应用。策略迭代是一种基于反馈的学习方法,通过迭代地更新策略来逐步优化行为,而多智能体系统则是由多个自主、互动的智能体组成的复杂系统。在这篇文章中,我们将从以下几个方面进......
  • asp.net core 6+中获取IServiceProvider的几种途径,以及之间的区别
    获取IServiceProvider实例的几种方法通过构造函数注入(ConstructorInjection):publicclassMyController:ControllerBase{privatereadonlyIServiceProvider_serviceProvider;publicMyController(IServiceProviderserviceProvider){_servicePr......
  • 私域和wei商有什么区别?
    私域与微商,底层逻辑并不相同很多人都曾分享过,微商的本质是造梦,提供给宝妈、学生一个低准入门槛的副业选择。微商的目的是变现,但变现路径并不是宣传里的“朋友圈种草-商品销售”,而是通过“朋友圈种草-发展代理-代理增员-增员囤货”的路径、以拉人头和发展代理进行变现。微商的产品必......
  • 数据挖掘与数据分析的主要区别是什么
     在当今数字化时代,数据已经成为了企业决策的重要依据,而数据挖掘与数据分析作为数据处理的重要工具,都在帮助企业从数据中发现价值,从而提升业务效益。然而,许多人对于数据挖掘与数据分析的区别并不清晰。数聚将从不同角度深度剖析数据挖掘与数据分析的区别,并探讨它们在实际应用中的......