URL编码表

写code的时候偶然发现了这方面的东西,就查了下,做个总结。


URL编码表定义

URL编码(也称为百分号编码)是一种在URL中表示特殊字符的方法。它将非字母数字字符替换为 % 后跟两个表示字符ASCII值的十六进制数字。这种编码用于确保这些字符可以安全地包含在URL中,在传输和解析过程中不会引起错误。

URL编码表

以下是一些常见字符及其URL编码表示法:

字符URL编码字符URL编码
空格%20#%23
!%21$%24
"%22%%25
&%26'%27
(%28)%29
*%2A+%2B
,%2C-%2D
.%2E/%2F
:%3A;%3B
<%3C=%3D
>%3E?%3F
@%40[%5B
\%5C]%5D
^%5E_%5F
`%60{%7B
``%7C}
~%7E

特殊字符及其编码意义

  1. 空格(Space): %20
  2. 引号("): %22
  3. 百分号(%): %25
  4. 加号(+): %2B
  5. 斜杠(/): %2F
  6. 冒号(:): %3A
  7. 问号(?): %3F
  8. @ 符号(@): %40
  9. 链接符号(#): %23

编码示例

示例1:编码URL中的空格和特殊字符

假设你有一个字符串 Hello World!,你想要将其编码为URL友好的格式:

import urllib.parse

original_string = "Hello World!"
encoded_string = urllib.parse.quote(original_string)
print(encoded_string)  # 输出:Hello%20World%21

在Python中使用 urllib.parse.quote 方法,可以将字符串中的空格和感叹号字符编码为 %20%21

示例2:解码URL编码的字符串

假设你有一个URL编码的字符串 Hello%20World%21,你想要将其解码回来:

import urllib.parse

encoded_string = "Hello%20World%21"
decoded_string = urllib.parse.unquote(encoded_string)
print(decoded_string)  # 输出:Hello World!

在Python中使用 urllib.parse.unquote 方法,可以将编码的字符串解码回来。

浏览器和编程语言中的URL编码和解码

JavaScript:

// 编码
let originalString = "Hello World!";
let encodedString = encodeURIComponent(originalString);
console.log(encodedString);  // 输出:Hello%20World%21

// 解码
let decodedString = decodeURIComponent(encodedString);
console.log(decodedString);  // 输出:Hello World!

属性

URL编码的字符主要有以下几类:

  • 保留字符(Reserved Characters): 在URL的某些部分有特殊含义的字符。

    • 例如::, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =
  • 不安全字符(Unsafe Characters): 这些字符在URL中使用可能会引起歧义。

    • 例如:空格、双引号(")、<, >, #, %, {, }, |, \, ^, ~, [, ], `
  • 字母数字字符(Alphanumeric Characters): 这些字符不需要编码。

    • 例如:字母(A-Z,a-z)、数字(0-9)

用途和示例

1. 安全传输数据

URL编码通常用于确保特殊字符不会被误解为URL的控制字符,从而在URL传输过程中避免错误。

2. 表示保留字符

在某些上下文中,例如查询字符串中,斜杠 / 和其他保留字符需要被编码以表示实际内容而非路径分隔符。

常见使用场景
  1. Form Data 提交: 在HTML表单提交时,表单数据会被编码以确保特殊字符可以正确传递。
  2. 查询参数: URL中的查询参数需要适当编码以防止干扰URL结构。
  3. 路径参数: 某些Web应用程序会对路径参数进行编码,以确保参数在路由中被正确解析。

总结

URL编码(百分号编码)是Web开发中常用的方法,用于确保URL可以安全地传输包含特殊字符、保留字符和不安全字符的数据。在实际开发中,你可以使用编程语言提供的URL编码函数来处理URL编码和解码。学习并理解这些编码规则,能够帮助你处理URL中的各种复杂情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908457.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文了解Android SELinux

在Android系统中&#xff0c;SELinux&#xff08;Security-Enhanced Linux&#xff09;是一个增强的安全机制&#xff0c;用于对系统进行强制访问控制&#xff08;Mandatory Access Control&#xff0c;MAC&#xff09;。它限制了应用程序和进程的访问权限&#xff0c;提供了更…

Redis-持久化(增量模式和全量模式)

文章目录 一、持久化和Redis持久化概念持久化介绍Redis持久化的介绍全量模式持久化技术——RDB增量模式持久化技术——AOF使用RDB还是AOF? 二、RDB配置以及数据恢复的简单实现RDB快照的工作方式如何关闭RDB持久化功能如何模拟Redis服务器数据丢失&#xff1f;然后再如何具体使…

SQL 常用语句

目录 我的测试环境 学习文档 进入数据库 基础通关测验 语句-- 查 展示数据库&#xff1b; 进入某个数据库&#xff1b; 展示表&#xff1a; 展示某个表 desc 查询整个表&#xff1a; 查询特定列&#xff1a; 范围查询 等于特定值 不等于 介于 特定字符查询 Li…

MFC图形函数学习05——画椭圆函数

MFC中有一个专门绘制椭圆的函数&#xff0c;其参数与绘制矩形参数相同&#xff0c;实际上所绘制的椭圆就是矩形的内切圆椭圆。 一、绘制椭圆函数 原型&#xff1a;BOOL Ellipse (int x1,int y1,int x2,int y2); 参数&#xff1a;椭圆内切矩形的左上角&#xff08…

Spring3(代理模式 Spring1案例补充 Aop 面试题)

Spring3 代理模式概述介绍什么是代理模式&#xff1f;为什么要使用代理模式&#xff1f;有哪几种代理模式&#xff1f;静态代理基于接口实现的动态代理(JDK自带)基于子类的动态代理 Spring_AOP_01案例补充(添加事务管理)实现完整代码&#xff1a;常规实现&#xff1a;代理实现 …

开源模型应用落地-Qwen2.5-7B-Instruct与TGI实现推理加速

一、前言 目前&#xff0c;大语言模型已升级至Qwen2.5版本。无论是语言模型还是多模态模型&#xff0c;均在大规模多语言和多模态数据上进行预训练&#xff0c;并通过高质量数据进行后期微调以贴近人类偏好。在本篇学习中&#xff0c;将集成 Hugging Face的TGI框架实现模型推理…

Android 使用ninja加速编译的方法

ninja的简介 随着Android版本的更迭&#xff0c;makefile体系逐渐增多&#xff0c;导致make单编模块的时间越来越长&#xff0c;每次都需要半个小时甚至更长时间&#xff0c;其原因为每次make都会重新加载所有mk文件&#xff0c;再生成ninja编译&#xff0c;此完整过程十分耗时…

javaNIO核心知识.中

Channel&#xff08;通道&#xff09; Channel 是一个通道&#xff0c;它建立了与数据源&#xff08;如文件、网络套接字等&#xff09;之间的连接。我们可以利用它来读取和写入数据&#xff0c;就像打开了一条自来水管&#xff0c;让数据在 Channel 中自由流动。 BIO 中的流…

缓存、注解、分页

一.缓存 作用&#xff1a;应用查询上&#xff0c;内存中的块区域。 缓存查询结果&#xff0c;减少与数据库的交互&#xff0c;从而提高运行效率。 1.SqlSession 缓存 1. 又称为一级缓存&#xff0c;mybatis自动开启。 2. 作用范围&#xff1a;同一…

流畅!HTMLCSS打造网格方块加载动画

效果演示 这个动画的效果是五个方块在网格中上下移动&#xff0c;模拟了一个连续的加载过程。每个方块的动画都是独立的&#xff0c;但是它们的时间间隔和路径被设计为相互协调&#xff0c;以创建出流畅的动画效果。 HTML <div class"loadingspinner"><…

【skywalking 】More than 15,000 ‘grammar‘ tokens have been presented. 【未解决请求答案】

问题 skywalking相关版本信息 jdk&#xff1a;17skywalking&#xff1a;10.1.0apache-skywalking-java-agent&#xff1a;9.3.0ElasticSearch : 8.8.2 问题描述 More than 15,000 grammar tokens have been presented. To prevent Denial Of Service attacks, parsing has b…

docker desktop使用ubuntu18.04带图形化+运行qemu

记录一下docker desktop使用ubuntu18.04带图形化命令和使用步骤 1. 下载镜像 参考&#xff1a;【Docker教程】Docker部署Ubuntu18.04(带图形化界面) 命令&#xff1a; docker pull kasmweb/ubuntu-bionic-desktop:1.10.02. 启动镜像 命令&#xff1a; docker run -d -it …

jmeter压测工具环境搭建(Linux、Mac)

目录 java环境安装 1、anaconda安装java环境&#xff08;推荐&#xff09; 2、直接在本地环境安装java环境 yum方式安装jdk 二进制方式安装jdk jmeter环境安装 1、jmeter单机安装 启动jmeter 配置环境变量 jmeter配置中文 2、jmeter集群搭建 多台机器部署jmeter集群…

ai翻唱部分步骤

模型部署 我是用的RVC进行的训练&#xff0c;也可以使用so-vits-svc。 通过百度网盘分享的文件&#xff1a;RVC-beta 链接&#xff1a;https://pan.baidu.com/s/1c99jR2fLChoqUFqf9gLUzg 提取码&#xff1a;4090 以Nvida显卡为例&#xff0c;分别下载“RVC1006Nvidia”和…

算法笔记-Day09(字符篇)

151. 反转字符串中的单词 class Solution {public String reverseWords(String s) {int lens.length(),count0;StringBuffer tempnew StringBuffer();StringBuffer ansnew StringBuffer();for(int i0;i<len;i){if(s.charAt(i)! &&(i0 || s.charAt(i-1) )){while(i&l…

安科瑞电能质量治理产品在光伏电站的应用有效解决了光伏电站面临的功率因数过低和谐波问题-安科瑞黄安南

1. 概述 随着全球对可再生能源需求的增加&#xff0c;分布式光伏电站的建设和发展迅速。然而&#xff0c;分布式光伏电站的运行过程中面临着一系列问题&#xff0c;比如导致企业关口计量点功率因数过低、谐波污染等。这些问题不仅影响光伏电站自身的运行效率&#xff0c;还会对…

Leetcode137只出现一次的数字|| 及其拓展

简述&#xff1a; 虽然标题是这么描述的&#xff0c;但是我们不是一上来就解这道题&#xff0c;先看一下他的子题和扩展 子题&#xff1a;136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 扩展题&#xff1a; 所以我们由易到难&#xff0c;先来看第一道&#x…

leetcode 382.链表随机结点

1.题目要求: 2.题目代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x)…

GaussDB Ustore存储引擎解读

目录 一、数据库存储引擎 二、GaussDB Ustore存储引擎 总结 本文将介绍GaussDB中的Ustore存储引擎&#xff0c;包括Ustore的设计背景、特点介绍和适用业务场景等。 一、数据库存储引擎 数据库的存储引擎负责在内存和磁盘上存储、检索和管理数据&#xff0c;确保每个节点的…

使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序

文章目录 实现效果Sortable.js介绍下载依赖添加类名导入sortablejs初始化拖拽实例拖拽完成后的处理总结 在开发过程中&#xff0c;我们经常需要处理表格数据&#xff0c;并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时&#xff0c;拖拽排序功能显得…