当前URL编码的规则

本文详细介绍了URL编码的规则,包括保留字符、非保留字符和其他字符的编码方式。URL编码,又称百分号编码,用于处理URI中的特殊字符,确保信息正确传输。当遇到如?、&等有特殊含义的字符时,需要进行编码,例如?编码为%3F。现代标准规定,URL编码应使用UTF-8字符集,避免了编码混乱的问题。文章还展示了不同浏览器下对特殊字符编码的处理一致性。
摘要由CSDN通过智能技术生成

摘要

让你理解当前URL编码的规则

URL编码

在这里插入图片描述

​ 我们在的HTTP请求的地址就是一种URI,为了通用性的考虑 URI所包含的部分被限制在了拉丁字母、数字、还有一些特殊的符号1。URI中有一些特殊含义的字符比如 / ? 等都是有特殊含义,这时候我们会遇见一个问题,那就是如果我们传输一些在限制之外或者恰巧是特殊的字符怎么办呢?

​ 这时候就需要我们的URL编码,也称之为百分号编码(Percent-encoding),应用于URI (URI包含URL和URN),有时候也应用于请求体格式为application/x-www-form-urlencoded的请求,看名字就知道被URL编码了。

URL编码就是找到你要编码的字符对应底层的16进制,然后再在前面加一个 百分号(%)。比如:%将会编码成 %25 a将编码成%61

​ 对于字符在URL编码中分为下面的三种情况:1.保留字符 2.非保留字符 3.其他字符

  1. 保留字符

    ␣	!	#	$	%	&	'	(	)	*	+	,	/	:	;	=	?	@	[	]
    

    这些字符在URI都会有特殊含义比如?后边就会传输一些查询参数。如果想要传输这?字符,我们需要按照上面的编码标准进行编码。 ?底层16进制使用的ACSII3F,所以我们的编码结果为%3F

  2. 非保留字符

    URI中允许存在但不是保留字符就是非保留字符了。非保留字符不用去进行URL编码,如果用了,接收方一般也是可以支持解析的。

  3. 其他字符

    除了以上两种字符便都是其他字符,比如 。由于上一版2使用的规定没有提到对这些字符使用什么字符集进行URL编码,这导致在一段时间内"URL编码"成为了一个混乱的领域3。今时不同往日了,新的标准已经制定了多年了,大家也已经都按照这个标准来了。里面就规定了 我们使用字符集UTF-8编码4,现在URL编码并不象之前那么混乱了。比如你好对应16进制(UTF-8)显示 E4BDA0E5A5BD

  • 在google浏览器 维基百科上查询

    ​ 浏览器返送的请求是这样

在这里插入图片描述

  • 火狐上查询

在这里插入图片描述

在这里插入图片描述

  • ME浏览器路浏览器同样效果

在这里插入图片描述

  • 分别使用google和百度搜索你好是什么效果

    在这里插入图片描述
    在这里插入图片描述

reference


  1. RFC 3986 “A URI is a sequence of characters from a very limited set: the letters of the basic Latin alphabet, digits,and a few special characters” ↩︎

  2. RFC 1738 ↩︎

  3. 阮一峰Blog “RFC 1738没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。这导致"URL编码"成为了一个混乱的领域。” ↩︎

  4. RFC 3986 " When a new URI scheme defines a component that represents textual data consisting of characters from the Universal Character Set [UCS],the data should first be encoded as octets according to the UTF-8 character encoding" ↩︎

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值