iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >js中如何对url进行编码和解码
  • 750
分享到

js中如何对url进行编码和解码

jsurljs对url进行编码js对url进行解码 2022-11-16 00:11:57 750人浏览 安东尼
摘要

目录js 对url进行编码和解码三种编码和解码函数js url二次编码和解码问题URL编码解码原理js 对url进行编码和解码 三种编码和解码函数 encodeURI和 decode

js 对url进行编码和解码

三种编码和解码函数

encodeURI和 decodeURI

它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。

需要注意的是,它不对单引号’编码。

encodeURIComponent和decodeURIComponent(推荐使用)

它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。

因此,"; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码

escape 和 unescape

对除ASCII字母、数字、标点符号 @ * _ + - . / 以外的其他字符进行编码。

js url二次编码和解码

问题

今天遇到了一个奇怪的问题:在JS中用decodeURI()解析完一串URL编码后发现它依旧是URL编码,看的我一脸懵逼!最后发现参数里面竟然是一个URL二次编码!

类似下面这种形式:

"%25E6%2588%2591%25E7%2588%25B1%25E4%25BD%25A0"

也就是说也解码两次才能得到原码,如下:

//编码结果:%25E6%2588%2591%25E7%2588%25B1%25E4%25BD%25A0
encodeURI(encodeURI('我爱你'))
//解码结果:我爱你
decodeURI(decodeURI("%25E6%2588%2591%25E7%2588%25B1%25E4%25BD%25A0"))

URL编码解码原理

URL编码原理:

这个百度百科上解释的就很好:URL编码就是一个字符ASCII码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如:“\”,它的ASCII码是92,92的十六进制是5c,所以“\”的URL编码就是%5c。

URL二次编码会对生成的编码再做一次编码,还拿“\”为例,一次编码后是“%5c”,再对“%5c”进行编码得到:“%255c”。

二次编码其实就是对%做了编码,后面的字母和数字没变,“%”的URL编码是“%25”,所以二次编码全都是已%25开头的。

注意:encodeURI()仅会将特殊字符转化成URL编码形式,特殊的字符:就是那些不是简单的七位ASCII,如汉字,中文标点,当然也包括%[] {}|等特殊字符。例如:

//结果:123abcABC
encodeURI("123abcABC")
//结果:"520%E9%9B%AA%E7%8B%90"
encodeURI("520雪狐")
//结果:"%25%7C%5B%5D%7B%7D"
encodeURI("%|[]{}")

URL编码原理:就是编码的逆过程,不再赘述。

注意:decodeURI也仅对URL编码解码,普通字符解码后依旧是普通字符,例如:

//结果:"234"
decodeURI('234')
//结果:我爱你
decodeURI("%E6%88%91%E7%88%B1%E4%BD%A0")
//结果:我爱你
decodeURI("我爱你")

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: js中如何对url进行编码和解码

本文链接: https://www.lsjlt.com/news/172982.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作