js中如何对url进行编码和解码
作者:草字 发布时间:2023-07-22 03:45:08
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("我爱你")
来源:https://primarycolor.blog.csdn.net/article/details/111172160
猜你喜欢
- 求英文字母、数字、下划线、汉字的js正则表达式英文字母或数字或下划线,英文字母数字下划线是:/^\w+$/汉字的是:/^[\u0391-\u
- 这里提供三种方法:1,使用正则表达式Function regKillHTML(str) &nb
- PHP+MySQL的组合是构建网站的一个常见搭配,不过如何使用PHP通过Web访问MySQL数据库呢?下面从Web数据库架构的工作原理讲起。
- 现在我们已经知道了,fixtures是一个非常强大的功能。那么有的时候,我们可能会写一个fixture,而这个fixture所有的测试函数都
- 1、首先停止正在运行的MySQL进程 Linux下,运行 killall -TERM mysqld Windows下,如果写成服务的 可以运
- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数
- 前些日子有网友问:将ASP纪录集输出成n列的的表格形式显示的方法?现在写了一个,方便大家使用。'定义变量 Dim cn,r
- 前言原子操作这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有
- 代码如下:--Begin Index(索引) 分析优化的相关 Sql -- 返回当前数据库所有碎片率大于25%的索引 -- 运行
- 可以查看: 代码如下:OPEN SYMMETRIC KEY 命令关于 对称密钥加密使用证书解密 CREATE MASTER KEY ENC
- 相同记录行如何取最大值我想这个东西在作一些相关采购系统或成本报价系统应该很有用的吧取当前的最有效的价格.记录下来与大家分享!--测试数据&n
- 由于现在在公司负责制作标准的静态页面,为了增强客户体验,所以经常要做些AJAX效果,也学你也和我一样在,学习AJAX。而设计AJAX时使用的
- 最近网上再度兴起了CSS布局和Table 布局的争论。我最初颇有些不以为然:我原以为CSS 布局的意义早已深入人心,却没想到还有这么多设计师
- 阅读前:Pro Javascript Techniques翻译连载说明和目录JavaScript的演化是渐进而稳固的。历经过去十年的进程,J
- 1.新建四个层,放入相应图片,模特层的z-index值设为0。2.把第一个层移到模特身上,找出衣服刚好穿上时层的top和left值,记下来,
- 如果遇到与文件许可有关的问题,可能数启动mysqld时UMASK环境变量设置得不正确。例如,当你创建表时,MySQL可能会发出下述错误消息:
- 这是 COMSHARP CMS 团队翻译的2009年海外Web设计风潮的第二部分,着重讲解了反 Box 式布局,单页布局,多栏布局,巨型插图
- 要想从命令行启动mysqld服务器,你应当启动控制台窗口(或“DOS window”)并输入命令:C
- 如何准确地获得一个整数?当然可以,Format就是做这个的“专家”:function NumbersOnlyNoDecimals(
- 主页上的鼠标是不是就只有箭头和小手两种模样呢?如果鼠标移到“帮助”等字样上时,形状就变成求助的问号;鼠标移到可能需要较长时间等待的超链接时,