URL编码规则介绍

一、什么是URL编码规则

1.1、URL的构成

URL构成说明
序号URL的构成部分说明
1

Scheme(方案)

表示浏览器请求资源必须使用的协议(一般为:http或https协议)
2

Domain Name(域名

Port(端口)

Authority(权威)由域名(也可以是ip地址)和端口组成
3

Path to resource(资源路径)

表示当前查看的Web 服务器上具体资源的路径
4

Paramerters(参数)

表示提供给 Web 服务器的额外参数,这些参数使用 & 符号分隔的键/值对列表。在返回资源之前,Web 服务器可以使用这些参数来执行额外的操作。每个 Web 服务器都有自己关于参数的规则。
5

Anchor(锚点)

表示是资源本身的另一部分的锚点。锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向。例如,在 HTML 文档上,浏览器将滚动到定义锚点的位置;在视频或音频文档上,浏览器将尝试转到锚代表的时间。值得注意的是,# 后面的部分(也称为片段标识符)不会随请求被发送到服务器

什么是 URL? - 学习 Web 开发 | MDN本文讨论了统一资源定位符(URL),并解释了它是什么,以及它的结构。icon-default.png?t=N7T8https://developer.mozilla.org/zh-CN/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL

1.2、URL编码规则

        URL的编码规则一般是体现在URL中的【参数】模块,该参数模块固定使用键值对的形式进行传参,多个键值对之间使用【&】符号分隔(如:name=中国%27or+1%3D1+%23&submit=查询)。

Web 命名和寻址概述(URI、URL、 ...) (w3.org)icon-default.png?t=N7T8https://www.w3.org/Addressing/w3.org/Addressing/rfc1738.txticon-default.png?t=N7T8https://www.w3.org/Addressing/rfc1738.txtASCII 表 | 菜鸟教程ASCII(发音:,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。 ASCII 由电报码发展而来。第一版标准发布于1963年 ,1967年经历了一次主要修订[5][6],最后一次更新则是在1986年,至..icon-default.png?t=N7T8https://www.runoob.com/w3cnote/ascii.html

由于URL设计之初是按照ASCII码为基础进行设计的,而ASCII码只支持128个字符;其中33个字符无法显示(编号范围是0-31和127(0x00-0x1F和0x7F)),只有95个可显示的字符(即从可显示字符编号范围是32-126【0x20-0x7E】)。

        那也就是说超出ASCII码的内容就没有办法正常显示,特别是对于国内使用的中文来说尤其明显,此时就交给应用程序(即:浏览器)来进行处理(目前浏览器对于超出ASCII码范围的内容是进行编码为百分比符号+16进制的2位数据显示如:%E4%B8%AD 表示中  %E5%9B%BD 表示国】)但是如果直接传递特殊字符如(=、&、#)等内容给服务器,会导致url服务器无法区分导致异常,因此,也需要对这些特殊字符进行编码为百分比符号+16进制的2位数据显示

        如上图RFC1738文件中的描述(只有字母和数字(即:0-9a-zA-Z)、一些特殊符号“$-_.+!*'(),”[特殊符号中不包含双引号]、以及某些保留字,才可以不经过编码直接用于URL)。

二、URL中不用编码的内容

除了如下列出的四种类型内容不用编码外,其他的所有内容都需要编码。

RFC1738、RFC3986文件中指定URL中不用编码的内容类型
序号URL中不用编码的内容类型
1数字(0-9
2字母(a-zA-Z
34个特殊符号(-_.~ )
4保留字符(! * ' ( ) ; : @ & = + $ , / ? # [ ]

RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (rfc-editor.org)icon-default.png?t=N7T8https://www.rfc-editor.org/rfc/rfc3986

三、URL中常见特殊字符编码与编解码工具

3.1、URL中常见特殊字符的编码表

URL中常见特殊字符的编码表
序号URL中常见特殊字符URL中常见特殊字符编码后的16进制数
1空格%20
2!%21
3"%22
4#%23
5$%24
6%%25
7&%26
8'%27
9(%28
10)%29
11*%2A
12+%2B
13,%2C
14-%2D
15.%2E
16/%2F
17:%3A
18;%3B
19<%3C
20=%3D
21>%3E
22?%3F
23@%40
24[%5B
25\%5C
26]%5D
27^%5E
28_%5F
29{%7B
30|%7C
31}%7D
32~%7E

3.2、URL中字符的编码与解码工具

URL在线编码解码icon-default.png?t=N7T8https://stackoverflow.org.cn/urlencode/#google_vignetteRFC 3986: Uniform Resource Identifier (URI): Generic Syntax (rfc-editor.org)icon-default.png?t=N7T8https://www.rfc-editor.org/rfc/rfc3986

https://github.com/guyoung/CaptfEncodericon-default.png?t=N7T8https://github.com/guyoung/CaptfEncoderhttps://github.com/guyoung/CaptfEncoder/releasesicon-default.png?t=N7T8https://github.com/guyoung/CaptfEncoder/releases

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛奶咖啡13

我们一起来让这个世界有趣一点…

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值