全面深度解析URL编码和URL解码方法过程
一、URL含义
1、URL定义
URL 是Uniform Resource Locator 的缩写,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名、参数,如“协议://授权/路径查询?参数”。
**URL 与 URI **
很多人会混淆这两个名词。
• URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)。
• URI:(Uniform Resource Identifier 的缩写,统一资源标识符)。
对于URI, 具体的结构如下:
URI 属于 URL 更低层次的抽象,一种字符串文本标准。URL 是 URI 的一个子集。
URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源(http://)。
URL 百度百科[1]
2、URL字符编码表
1、URL 编码 - 从 到 %ff[2]
2、HTML特殊字符编码对照表[3]
二、URL 编码
1、为什么要编码转义
推荐阅读:字符编码:ASCII、Unicode 和 UTF-8 的区别[4]
世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号,不同的编码方式,解码出来就是乱码,造成数据传输和阅读的极大障碍。互联网的来临,必须要统一字符编码,Unicode(统一码、万国码、单一码)作为计算机科学领域里的一项业界标准应运而生。Unicode 是互联网统一的符号集,只规定了符号唯一的二进制代码值,却没有规定这个二进制代码应该如何存储。UTF-8是一种针对Unicode的可变长度字符编码,UTF-8用1到4个字节编码Unicode字符,在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。
注意:UTF-8 是 Unicode 的实现方式之一。
如 中 字:
• Unicode码值:\u4e2d
• URL编码(UTF-8):%e4%b8%ad
2、URL编码规则
Url编码通常也被称为百分号编码,编码方式非常简单,使用%百分号加上两位的字符——0123456789ABCDEF——代表一个字节的十六进制形式。Url编码默认使用的字符集是US-ASCII。例如a在US-ASCII码中对应的字节是0x61,那么Url编码之后得到的就是%61,我们在地址栏上输入 http://g.cn/search?q=%61%62%63 ,实际上就等同于在google上搜索abc了。又如@符号在ASCII字符集中对应的字节为0x40,经过Url编码之后得到的是%40。
对于非ASCII字符,需要使用ASCII字符集的超集进行编码得到相应的字节,然后对每个字节执行百分号编码。对于Unicode字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,然后对每个字节执行百分号编码。如"中文"使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96 0x87,经过Url编码之后得到"%E4%B8%AD%E6%96%87"。
3、URL不需要编码的字符
HTTP URL 使用的RFC3986编码规范,RFC3986文档规定,URL中只允许包含以下四种:
1、英文字母(a-z A-Z)
2、数字(0-9)
3、-_.~ 4个特殊字符
4、所有保留字符,RFC3986中指定了以下字符为保留字符(英文字符):
! * ' ( ) ; : @ & = + $ , / ? # [ ]
5、编码标记符号 %
URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 的字符,中文是三个编码组合。十六进制格式用于在浏览器和插件中显示非标准的字母和字符。
4、URL需要编码的字符
Url编码的原则就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。
4.1、非URL定义的字符
不能在 URL 中包含任何非 ASCII 字符,如中文字符、希腊文字符,拉丁文字符等。如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成乱码问题。
4.2、会引起歧义的保留字符
URL 拼接参数或路径设置时,拼接的普通字符串中含有保留字符,会引起歧义的情况。URL 参数字符串中使用 key=value 这样的键值对形式来传参,键值对之间以 & 符号分隔,如宝洁公司的简称为P&G,假设需要当做参数去传递,name=P&G&t=1450591802326,因为参数中多了一个&势必会造成接收 URL 的服务器解析错误,因此必须将引起歧义的 & 符号进行转义编码。
部分保留字符及其URL编码
如果需要在URL中用到特殊字符或中文字符,需要将这些特殊字符换成相应的十六进制的值。
三、iOS端URL具体编码处理
1、URL编码和解码是成对
URL编码和解码是一个可逆的过程,编码和解码的逻辑是翻转对应的。
成对有两层含义:
• 1、两个方法的逻辑对应。一个固定的编码方式,也对一个固定的逆向解码方式,反之亦然。
• 2、编码和解码的次数也要一一对应。
这四种种字符后,URL编码后的值还是它本身:
1、英文字母(a-z A-Z)
2、数字(0-9)
3、特殊字符( -_.)
4、部分保留字符(英文字符):! * ' ( ) ; : @ & = + $ , / ?
说明:~ # [] 这四个字符是否被转码成百分号编码,因系统不同会有不同。
URL字符编码使用%百分号加上两位的字符——0123456789ABCDEF——代表一个字节的十六进制形式。因编码后的值含有 % 保留字符。再次编译 % 会编译成 %25。
例如: &
第一次URL编码后:%26
第二次URL编码后:%2526
第三次URL编码后:%252526
正常解码逻辑:
第一次URL解码后:%2526
第二次URL解码后:%26
第三次URL解码后:&
因此,URL编码和解码必须是成对出现的。
初始字符为 & 连续编码三次,连续解码两次,则得到 %26 。
初始字符为 &%26 编码一次:%26%2526 连续解码两次则得到 && 。
2、URL是怎么解码的
我们看一个常见的接口请求示例:
一般会根据 ://、: 、 / 、 ?、 &、= 等拆分出请求的协议、服务器名称(或IP地址)、端口号、路径和文件名、参数名、参数值等。
3、在组装URL的什么阶段进行URL编码
我们看一个常见的接口请求示例:
绿色字体是保留字符,都有特殊的含义,是不应该是被编码的。红色字体必须要要编译的部分。黄色背景的字符串,不应该被编译。若以上操作不正确,会影响整个URL的解析。
本文地址:武汉SEO优化频道 http://www.hkm168.com/seojishu/8863.html,武汉易企推公司是一家专业的武汉网络推广,百度开户竞价托管,SEO网站优化公司,提供一站式全网营销服务:小程序开发,网站建设,SEO百度排名,SEM竞价托管,百度推广开户、360搜狗百度竞价开户、百度地图标注、百科词条创建修改、微信公众号代运营、公司负面公关处理等;另外,转载本文请保留本文地址,本站部分文章图片来自网络,本着互联网分享精神,如有侵犯到您的权益,请告知我们删除,谢谢!

-
全面深度解析URL编码和URL解码方法过程
全面深度解析URL编码和URL解码方法过程,一、URL含义1、URL定义URL 是Uniform Resource Locator 的缩写,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址...
2022-06-22 03:06 -
URL编码原理详解,URL编码转换工具
URL编码原理详解,URL编码转换工具介绍,工作当中经常遇到通过URL传递参数(常见的如GET请求)时出现参数乱码,或者URL中的参数传递到后端多了空格等字符,或者URL传递的参数被莫名其妙截断,或者http接口需要的数字签名参数一直验签失...
2022-06-22 03:06 -
URL地址是什么意思,URL地址怎么获取?
URL地址是什么意思?URL地址也叫URL(Uniform Resource Locator)统一资源定位器,是计算机Web网络相关的术语,就是网页地址的意思。我们的互联网世界就是由很多的URL地址组成,也可以说就是已URL来表现的。每一个...
2022-06-21 08:06 -
URL规范标准,URL是越短越好么?
URL规范标准是越短越好么?假如有些论坛或搜索类程序,会出现许多参数,参数越多,搜索引擎蜘蛛就越难识别,而且很容易陷入蜘蛛陷阱。URL网址规范如下:1、字母全部小写;2、网址越短越好,方便用户记忆;3、避免参数过多,尽量使用静态网址或伪静态...
2022-06-21 08:06 -
URL是什么意思 ,URL格式有哪几部分组成?
URL是什么意思URL定义:URL是(Uniform Resource Locator,统一资源定位符)的缩写,它是WWW的统一资源定位标志,就是指网络地址,俗称“网址”,url用浏览器打开。URL是文件的网络地址,相当于人的住址,每一个网...
2022-06-21 07:06 -
urlmon.dll是什么
DLL 文件: urlmon 或者 urlmon.dll DLL 名称: OLE32 Extensions for Win32 描述:urlmon.dll是微软Microsoft对象链接和嵌入相关模...
2022-06-15 12:06
知识推荐
- 武汉高端网站建设公司哪家好,怎么选择建站公司?
- 为什么网站日志中经常显示垃圾流量?如何解决?
- 武汉竞价推广,如何快速提高关键词的质量度?
- 教育培训行业SEM竞价广告账户数据分析怎么做?
- 竞价新手必看!各大模块的实例来进行解说
- 网站制作一个网站需要的基础配置有哪些?
- 挣脱网络推广的困局,精准营销让流量变成“留量”?
- 泛目录:被黑帽SEO耽误了的SEO推广利器!
- 某产品的网络营销策划那么厉害,有那些网络营销策划推广方案
- icp许可证哪个部门审批,icp许可证办理条件
- 别招客户烦了,这样的网页设计用户喜欢又好玩!
- robots.txt设置规则,怎么设置robots协议文件对SEO优化更友好
- 做一个营销型网站要从SEO的角度分析策划制作
- SEO推广怎么做,武汉seo告诉你可以从这几种方法入手
- 信息流广告投放落地页策划及移动端着陆页的优化技巧