js中三种URI编码方式比较

这篇具有很好参考价值的文章主要介绍了js中三种URI编码方式比较。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实例比较

数据传递常需要编码后传递,接收还需反编译,定义url:

var url = "https://www.cnblogs.com/?username='小森森'&password='666666'";

escape 与 unescape

console.log(escape(url));// 编码
console.log(unescape(escape(url)));// 解码

结果:

https%3A//www.cnblogs.com/%3Fusername%3D%27%u5C0F%u68EE%u68EE%27%26password%3D%27666666%27

encodeURIComponent 与 decodeURIComponent (推荐)

console.log(encodeURIComponent(url));// 编码
console.log(decodeURIComponent(encodeURIComponent(url)));// 解码

结果:

https%3A%2F%2Fwww.cnblogs.com%2F%3Fusername%3D'%E5%B0%8F%E6%A3%AE%E6%A3%AE'%26password%3D'666666'

encodeURI 与 decodeURI

console.log(encodeURI(url));// 编码
console.log(decodeURI(encodeURI(url)));// 解码

结果:

https://www.cnblogs.com/?username='%E5%B0%8F%E6%A3%AE%E6%A3%AE'&password='666666'

二、区别分析

三种方法都不会对 ASCII 字母、数字和规定的特殊 ASCII 标点符号进行编码,其余都替换为十六进制转义序列.

escape 与 unescape

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

对字符串全部进行转义编码,ECMAScript v3 反对使用该方法,对URL编码勿使用此方法

encodeURIComponent 与 decodeURIComponent

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

传递参数时需使用encodeURIComponent,组合的url才不会被#等特殊字符截断

encodeURI 与 decodeURI

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

进行url跳转时可以整体使用encodeURI,如果URI中含分隔符如 ? 和 #,应使用encodeURIComponent

三、结论

推荐使用encodeURIComponent

四、原文链接

js中三种URI编码方式比较文章来源地址https://www.toymoban.com/news/detail-761923.html

到了这里,关于js中三种URI编码方式比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常见三种编码方式

    最近复习一些书,记录一下。在特征工程中,数据集经常会出现分类变量,这时候的分类变量可能是字符型,通常不能直接用于训练模型,这时需要对分类变量进行编码,用编码后的结果代入训练模型。下面以房子朝向为例: 这里介绍三种常见的编码方式,直接编数字没有放

    2024年02月02日
    浏览(13)
  • C++ 参数的三种传递方式和应用参加

    C++ 参数的三种传递方式分别是 值传递 、 指针传递 和 引用传递 。 值传递 值传递的实质 将实参的值(a、b)复制到形参(m、n)相应的存储单元中,即形参和实参分别占用不同的存储单元。 值传递的特点 值传递的特点是单向传递,即主调函数被调用时给形参分配存储单元,把

    2024年02月08日
    浏览(24)
  • php使用get和post传递数据出现414 Request-URI Too Large的解决方案

    “Request-URI Too Large”(请求URI过长)是一个HTTP错误状态码,表示所发送的HTTP请求中的URI(统一资源标识符)长度超过了服务器能够处理的限制。 这个错误通常发生在发送GET请求时,URI的长度超过了服务器或代理服务器的限制。HTTP协议对于URL的长度没有明确的规定,而是由服

    2024年02月14日
    浏览(30)
  • VS2022设置编码方式为utf-8的三种方式

    此方法同样适用Visual Studio的其他版本 在字符串前面使用 u8 ,可保证解析时安装utf-8的方式解析 安装插件:Force UTF-8 更改VS的编码方案 首先需要打开高级保存选项 然后打开 文件 — 高级保存选项 即可进行设置 参考链接: 探究Visual Studio中的乱码问题 - CSDN

    2024年02月11日
    浏览(38)
  • Python中三种时间格式转换的方法

    一 时间元组 1. 时间元组和时间戳的互化 2. 时间元组和字符串的互化 二 字符串与时间戳 字符串与时间戳不能直接转化,要通过时间元组来完成,时间元组是中介. 转化图: 三 时间的加减用法 时间元组不能加减,要用datetime格式的时间才能加减.下面是字符串转为datetime后,进行

    2024年02月13日
    浏览(35)
  • Jmeter 三种提取方式 —— 关联实例

    当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理 Jmeter中常用的关联方法: 正则表达式提取器、XPath提取器、JSON提取器​​​​​​ 案例: 用正则表达式从以下文本中提取出,城市区号、地区号、个人号: 021-1324-4454  045

    2024年02月09日
    浏览(27)
  • Java中三种保留小数点的方法

    方法一:使用BigDecimal格式化小数点 结果 方法二: 使用Math工具中的取整方法,可用于浮点数取整,只看浮点数的小数位是何值来判断. 结果展示: 方法三: 使用DecimalFormat数据格式化方式. 结果展示:

    2024年02月11日
    浏览(29)
  • (Python) Python中三种时间格式的转换方法

    1. 时间元组 1.1. 时间元组和时间戳的互相转化 1.2. 时间元组和字符串的互相转化 2. 字符串与时间戳 字符串与时间戳不能直接转化,要通过时间元组来完成,时间元组是中介. 转化关系图: 3. 时间的加减用法 时间元组不能加减,要用datetime格式的时间才能加减.下面是字符串转为

    2024年02月05日
    浏览(28)
  • WPF中三种方法得到当前屏幕的宽和高

    WPF程序中的单位是与设备无关的单位,每个单位是1/96英寸,如果电脑的DPI设置为96(每个英寸96个像素),那么此时每个WPF单位对应一个像素,不过如果电脑的DPI设备为120(每个英寸120个像素),那此时每个WPF单位对应应该是120/96=1.25个像素 一般在程序中我们常常需要得到当

    2024年02月12日
    浏览(24)
  • JAVA中三种I/O框架——BIO、NIO、AIO

    BIO,同步阻塞IO模型,应用程序发起系统调用后会一直等待数据的请求,直至内核从磁盘获取到数据并拷贝到用户空间; 在一般的场景中,多线程模型下的BIO是成本较低、收益较高的方式。但是,如果在高并发的场景下,过多的创建线程,会严重占据系统资源,降低系统对外

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包