URL编码指南
URL简介
URL 是统一资源定位符(Uniform Resource Locator)的缩写。它是用于在互联网上定位并访问资源的一种标识方式。
URL通常由以下几个组成部分组成:
- 协议(Protocol):指示要使用的协议,如HTTP、HTTPS、FTP等。
- 主机名(Host):指定资源所在的主机或服务器的名称或IP地址。
- 端口号(Port):可选项,指定服务器上提供资源的特定端口号,如果未提供,默认使用协议的默认端口。
- 路径(Path):指示资源在服务器上的位置,可以是一个文件路径或文件夹路径。
- 查询参数(Query Parameters):可选项,用于传递额外的信息给服务器,以影响资源的呈现或操作。
- 片段(Fragment):可选项,指定资源中的特定部分或片段。

例如,下面是一个常见的URL示例:
https://www.example.com:8080/myfolder/mypage.html?param1=value1¶m2=value2#section2
在上面的例子中,协议是 HTTPS,主机名是 www.example.com,端口号为 8080,路径是 /myfolder/mypage.html,查询参数是 param1=value1 和 param2=value2,片段是 section2。
URL使我们可以轻松地访问和定位到互联网上的各种资源,例如网页、图像、视频、API等。
URL编码是啥?
URL编码是一种将特殊字符和非ASCII字符转换为特定字符编码的过程,以便在URL中进行传输和处理。
在URL编码中,特殊字符和非ASCII字符被转换为一种称为百分号编码(Percent-Encoding)的格式。这种编码格式用百分号(%)加上两个十六进制数值来表示字符的编码。
URL编码的目的是确保URL中不包含不允许的或可能引起冲突的字符,以及能够正确传输和解析各种字符。一些常见的特殊字符如空格、斜杠、问号等在URL中具有特殊的语义含义,为了将其表示为普通字符,需要进行URL编码。
举例来说,空格在URL中是不允许的,因此需要将空格编码为%20。同样的,其他特殊字符也有对应的编码方式,例如斜杠(%2F)、问号(%3F)、等号(%3D)、加号(%2B)等。
URL编码使得URL能够被正确地传输和解析,确保了在互联网上的可靠性和一致性。它在Web开发、网站解析等领域中广泛使用。
为什么要使用URL编码?
URL编码的主要目的是确保在URL中传输和解析各种字符时的可靠性和一致性。以下是使用URL编码的几个主要原因:
-
特殊字符的语义问题:URL中的一些字符具有特殊的语义含义,例如问号(?)、等号(=)、斜杠(/)等。为了将这些字符表示为普通字符而不是发挥特殊的作用,需要对它们进行URL编码。
-
安全性:URL编码可以防止恶意攻击和注入,例如XSS(跨站脚本)攻击。编码可以确保传输的数据不包含恶意脚本或不符合预期的字符,从而保护系统的安全性。
-
特殊字符的冲突:URL中有些字符可能会和URL结构冲突,特别是对于包含特殊字符的用户输入,如文件名、路径等。通过URL编码,可以将这些特殊字符转换为安全的表示形式,避免引起冲突。
-
非ASCII字符的支持:URL编码还可以处理非ASCII字符,这些字符无法直接在URL中传输。通过URL编码,可以将非ASCII字符转换为URL安全的编码形式,例如Unicode字符。
综上所述,URL编码是一种标准化的字符转换方式,确保在URL中传输和解析各种字符的准确性和一致性,同时提高了URL传输的安全性和可靠性。
URL编码的基本规则
URL编码的基本规则如下:
-
字母、数字和一些特殊字符,例如 -_.~ 这些字符保持不变。
-
空格被编码为 “+” 或 “%20”。
-
其他非字母数字字符被编码为百分号(%)加上它们的ASCII值的十六进制表示。
-
对于非ASCII字符,如Unicode字符,采用"UTF-8"编码,将字符转换为字节序列,然后将每个字节的值编码为百分号(%)加上其十六进制值。
-
对于某些字符的编码,例如斜杠(/,%2F)和问号(?,%3F),虽然它们在大多数情况下没有语义上的特殊含义,但为了保守起见,最好仍然进行编码。
-
编码区分大小写。大写字母和小写字母(A-Z和a-z)在编码时被视为不同的字符。
总结
URL编码是一种将URL中非字母数字字符转换为特殊编码格式的方法。这些特殊编码格式采用百分号+十六进制表示的形式,以避免URL中的特殊字符被误解为其他用途。URL编码使得包含特殊字符的URL能够在网络中正确传输和解析,并且保证URL的完整性和准确性。
相关文章:
URL编码指南
URL简介 URL 是统一资源定位符(Uniform Resource Locator)的缩写。它是用于在互联网上定位并访问资源的一种标识方式。 URL通常由以下几个组成部分组成: 协议(Protocol):指示要使用的协议,如…...
Java mail邮件开发 OA办公系统
目录 1 Java mail邮件开发 OA办公系统 1.1 ExitServlet 1.1.1 //退出系统 1.2 LoginAction 1.2.1 //登录Action Java mail邮件开发 OA办公系统 ExitServlet package com.email.ser...
ElasticSearch的客户端操作
ElasticSearch的客户端操作 1、客户端介绍 官方文档地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 实际开发中,有多种方式操作Elasticsearch: 客户端工具:发送http请求(RESTful风格)操作…...
如何快速的合并多个PPT使之成为一个PPT?
如何快速的合并多个PPT使之成为一个PPT? 项目过程中,经常给客户汇报,经常做PPT,有时候,需要把之前的ppt内容整合到新的内容中,如何快速合并以及使用呢? 幻灯片(PPT中)点…...
【微信小程序】列表滚动触底更新实现
微信小程序开发系列 目录 前言一、上拉触底事件函数onReachBottom二、实现 前言 在微信小程序开发中经常遇到分页列表需要滚动到底部之后进行请求数据更新,下面介绍如何进行触底更新分页展示。使用到页面上拉触底事件的处理函数onReachBottom。 一、上拉触底事件函…...
2023全国大学生数学建模竞赛A题B题C题D题E题思路+模型+代码+论文
目录 一. 2023国赛数学建模思路: 赛题发布后会第一时间发布选题建议,思路,模型代码等 详细思路获取见文末名片,9.7号第一时间更新 二.国赛常用的模型算法: 三、算法简介 四.超重要!!&…...
Git常见操作
一、全局配置命令 配置级别: –local(默认,高级优先):只影响本地仓库 –global(中优先级):只影响所有当前用户的git仓库 –system(低优先级):影响到全系统的git仓库 1…...
thinkphp6前后端验证码分离以及验证
1.验证码接口生成验证码: public function verify(){return captcha(); } 也可以自己写方法 2.验证方法和普通模式session验证有区别,需要改原文件: 修改后的代码: <?php // +---------------------------------------------------------------------- // | ThinkP…...
jenkinsfile自动部署接口
复制创建新流水线 从预先创建的job中获取 config.xml 或根据需要创建另一个 curl -X GET http://xxx.xxx.xxxx.com/job/backup-data/config.xml -u test:xxxxxxxxxxxxxxxxxx-o config.xml 生成Crumb CRUMB$(curl -s http://xxxxxxx.xxx.xxx.com/crumbIssuer/api/xml?xpathc…...
26. 删除有序数组中的重复项
26. 删除有序数组中的重复项 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的…...
vue父页面获取子组件绑定值
<el-form-item label"图文详情" prop"imageText"><div><el-button type"primary" link>组件</el-button><WangEditor v-model"ruleForm.imageText"></WangEditor></div> </el-form-item…...
FPGA_学习_17_IP核_ROM(无延迟-立即输出)
由于项目中关于厂商提供的温度-偏压曲线数据已经被同事放在ROM表了,我这边可用直接调用。 今天在仿真的时候,发现他的ROM表用的IP核是及时输出的,就是你地址给进去,对应地址的ROM数据就立马输出,没有延迟。 我打开他的…...
CentOS7.6安装mysql8.0.34
一、查看服务器相关信息 cat /etc/redhat-release cat /proc/version [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [rootlocalhost ~]# cat /proc/version Linux version 3.10.0-957.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) …...
SCF金融公链新加坡启动会 链结创新驱动未来
新加坡迎来一场引人瞩目的金融科技盛会,SCF金融公链启动会于2023年8月13日盛大举行。这一受瞩目的活动将为金融科技领域注入新的活力,并为广大投资者、合作伙伴以及关注区块链发展的人士提供一个难得的交流平台。 在SCF金融公链启动会上, Wil…...
JavaScript【实例、静态方法与属性、原型链、instanceof 运算符、Object 对象的相关方法、对象的继承、多重继承、严格模式】(十九)
目录 实例、静态方法与属性 实例方法和静态方法...
【Git】本地搭建Gitee、Github环境
本地 (Local) 1、使用命令生成公钥(pub文件) 1. $ ssh-keygen -t rsa -C "xxxxxxxemail.com" -f "github_id_rsa" 2. $ ssh-keygen -t rsa -C "xxxxxxxemail.com" -f "gitee_id_rsa" …...
学习ts(四)联合类型、交叉类型、类型断言
联合类型 使用联合类型定义属性和方法,只要符合其中一种即可 let myPhone: string | number 010-7788 // let myPhone1: string | number true 因为没有包含boolean值 会报错const fn (something: number | boolean): boolean > {return !!something }con…...
Linux 内核与架构速查
Linux 内核与架构速查 博主博客 https://blog.uso6.comhttps://blog.csdn.net/dxk539687357 本文主要记录查询 Linux 计算机的内核与架构, 用于下载对应架构的第三方软件。 一、介绍 如上图所示, 有时候我们下载一些第三方软件, 软件会有很…...
【Java 动态数据统计图】动态数据统计思路案例(动态,排序,containsKey)五(117)
需求:前端根据后端的返回数据:画统计图; 1.动态获取地域数据以及数据中的平均值,按照平均值降序排序; 说明: X轴是动态的,有对应区域数据则展示; X轴 区域数据降序排序;…...
区块链碎碎念
现在的区块链早已过了跑马圈地的时代,现在还按照以前承接项目的方式做区块链只能是越来越艰难。经过几年的技术沉淀,做区块链项目的公司都已经没落的七七八八了。 区块链不是一个能够快速显现盈利能力的行业,相反这个行业目前的模式还是处于…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...
Java设计模式:责任链模式
一、什么是责任链模式? 责任链模式(Chain of Responsibility Pattern) 是一种 行为型设计模式,它通过将请求沿着一条处理链传递,直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者,…...
vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能
vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能 查看官网:https://vxetable.cn 效果 代码 通过 checkbox-config.isShift 启用批量选中,启用后按住快捷键和鼠标批量选取 <template><div><vxe-grid v-bind"gri…...
