HTTP协议的解码和编码

2023-05-16

HTTP协议的解码和编码

  • 编码规范
  • URL的编码与解码
    • “%编码” 规范实战:使用fiddler来抓住http请求

相当于各省各地的人说不同的话,大家互相听不懂,那么http就相当于有一个翻译器,能够编码解码。

编码规范

在这里插入图片描述
每套编码规范都有自己使用的场景,字库表存储了编码规范中能够所有能够表示的字(比如:所有的汉字都在gbk编码规范的字库表里),在一个组库表,每一个字都有对应的二进制数,这些二进制数存储在字符集中。字库表和字符集一一对应,相互转换。
不同编码规范节省得空间也不一样,一个较短的二进制数通过一种编码方式转化成字符集中对应的地址,然后在字库表中找到一个字符,显示给用户

常见的编码规范有:
在这里插入图片描述ASCII码:
它用 7 个二进制位来表示,由于那个时期生产的大多数计算机使用 8 位大小的字节,因此用户不仅可以存放所有 可能的ASCII字符,而且有整整一位空余下来。如果你技艺高超,可以将该位用做自己离奇的目的。

ASCII第一次以规范标准的类型发表是在 1967年,最后一次更新则是在 1986年,到目前为止共定义了 128个字符。

作用: 表语英语及西欧语言。

位数: ASCII是用 7位表示的,能表示 128个 字符;其扩展使用 8位表示,表示 256个字符。

范围: ASCII从00到7F,扩展从00到FF。

一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

GBK 编码标准:

兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码

编码空间为 0x8140~0xFEFE,共有 23940 个码位,
其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。收录了 21003 个汉字。

iso8859-1

属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母’a’的编码为0x61=97。

iso8859-1编码表示的字符范围很窄,无法表示中文字符。
由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。
把其他任何编码当做iso8859-1来解码的时候,都能解开,也是MYSQL的默认编码
位数:8位,
范围:从00到FF,兼容ASCII字符集。
英文 一个字节,不支持中文

Unicode编码:

Unicode字符集(简称为UCS),国际标准组织于1984年4月成立 ISO/IEC JTC1/SC2/WG2工作组,针对各国文字、符号进行统一性编码。

Unicode编码后的大小是一样的:
例如 一个英文字母 “a” 和 一个汉字 “好”,编码后都是占用的空间大小是一样的,都是两个字节

Unicode可以用来表示所有语言的字符:
而且是定长双字节(也有四字节的)编码,包括英文字母在内。
所以可以说它是不兼容iso8859-1编码的, 也不兼容任何编码。不过,相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母’a’为"00 61"。定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。

UNICODE字符集有多个编码方式:
分别是UTF-8,UTF-16,UTF-32和UTF-7编码。

作用:亚 美 采用同一编码字集。

位数:16位,

范围:符号 6811个,汉字 20902个,韩文拼音 11172个,造字区 6400个,保留 20249个,共计 65534个。

英文 中文都占用两个字节,中英各自标点符号也是如此

UTF-8:

UTF:UCS Transformation Format.考虑到 unicode编码不兼容iso8859-1编码,而且容易占用更多的空间。因为对于英文字母,unicode也需要两个字节来表 示。所以unicode不便于传输和存储。因此而产生了utf编码。

utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,
utf编码是不定长编码,每一个字符的长度从1-6个字节不等。
另外utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字 使用三个字节。
注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是 最节省的。

URL的编码与解码

◆URL是采用ASCII字符集进行编码的,所以如果URL中含有非
ASCI字符集中的字符,要对其进行编码。
◆URL中一 些保留字符,如"&”表示参数分隔符,如果想要在URL中使用这些保留字,那就需要编码。

◆“%编码” 规范
◆对URL中属于ASCII字符集的非保留字不做编码;对URL中的保留字需要取其ASCI内码,然后加上”%” 前缀将该字符进行编码;对于URL中的非ASCII字符需要取其Unicode内码,然后加上“%" 前缀将该字符进行编码。

“%编码” 规范实战:使用fiddler来抓住http请求

当打开fiddler,fiddler会自动添加对应的代理在浏览器上
在这里插入图片描述访问webtours:
在这里插入图片描述
抓到了webtour的请求

在这里插入图片描述
加上username=承承
在这里插入图片描述

捕捉到的请求对中文百分号加密:
在这里插入图片描述

将加密的%编码 E6%89%BF%E6%89%BF写入url中:
在这里插入图片描述

发现没有再次被编码,只被编码了一次:
在这里插入图片描述

表明浏览器只对url中的非ASCII码字符进行编码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP协议的解码和编码 的相关文章

  • 为什么c++要“在头文件中声明,在源文件中定义”?

    gt gt gt 搬运一个知乎问答 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 下面是回答 61 61 61 61 61 61 61 61 61 61 61 61 61
  • HTTP header 参数丢失情况分析以及解决防范

    HTTP header 参数丢失情况分析以及解决防范 1 问题 当项目有Nginx做了代理的时候 xff0c 请求头中传参 34 user ip 34 xff0c 接口接收不到 2 问题分析 默认nginx是不能转发带 的header信息的
  • Keil 调试局部变量查看显示not in scope

    调整优化级别 不同的优化级别允许您在编译代码中可用的调试信息级别与代码性能之间进行权衡 可以使用以下优化级别 xff1a o O0应用最小优化 大多数优化都被关闭 xff0c 生成的代码具有最佳的调试视图 o O1应用受限优化 例如 xff
  • 【32单片机学习】(6)STM32串口+DMA收发不定长数据

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 前言 1 DMA介绍 2 串口接收数据 3 实验现象 1 实验电路图 2 串口收发不定长数据视频演示 3 OLED 显示接收数据 4
  • www-authenticate认证过程浅析

    文档 xff1a www authenticate认证过程简单研究 创建 xff1a http hi baidu com netee 日期 xff1a 2009 10 07 版权 xff1a 原创内容 xff0c 转载请注明出处 xff0c
  • STM32F407ZG 串口通信+固定帧头帧尾传输数据帧

    STM32F407ZG开发板学习 xff08 4 xff09 串口简介通信接口USART接线电平标准数据帧 实验 xff1a 固定帧头帧尾数据传输需求最终思路以及思考过程思路中断函数程序段长度的问题缓冲区数据结构的决定 初始化配置中断服务函
  • 基于杰理RTOS平台的433射频无线数传通信

    在杰理的AC7916N实现了433射频的数据发送 xff0c 在杰理的AD15系列实现433射频接收 xff0c 本代码用于门铃项目收发 xff0c 下面请看代码 首先是AC7916N的433数据发送代码 xff0c 发送部分的程序放在一个
  • boost简介

    我认为做为一名c 43 43 编程人员 xff0c 对boost库必须要有一定的了解与使用 这对于代码的整洁和效率有很大的帮助 借着这个机会整理一下使用boost库的经验 xff0c 顺便再学习一下 首先 xff0c 什么是boost库 b
  • Android上增加对M3U8文件下载的功能

    最近给一个客户提了一个需求 xff0c 想对他们网站的视频做一个下载的功能 xff0c 希望他的App能够缓存视频功能 xff0c 然后用户可以在下次快速播放视频 一开始接到这个需求 xff0c 自然是去搜罗一遍 xff0c 有没有可靠稳定
  • VLC自定义m3u8协议片段加密方式

    hls xff08 m3u8 xff09 本身有一套自己的加密方式 xff0c 可以保证片段是安全的 但是本身在传输的过程中加密key请求容易被截获 xff0c 这样存在一点片段key被截取的风险 xff0c 截取者就可以根据片段和key重
  • Fragment里使用CordovaWebView

    因为CordovaWebView 默认的初始化里判断了Content是不是继承CordovaInterface xff0c 如果直接使用Fragment继承CordovaInterface xff0c CordovaInterface有个抽
  • CMake教程(二)- 添加静态库文件和动态库文件

    CMake教程 xff08 二 xff09 添加静态库文件和动态库文件 什么是库文件静态链接库动态链接库静态库和动态库的区别 如何在CMake中添加库文件CMake 中 target link libraries 的 PRIVATE xff
  • jtextpane的使用方法

    jtextpane是java swing中的一个组件 xff0c 是一个可以编辑和显示html xff0c rtf和普通文本的富文本组件 xff0c jtextpane是根据使用EditorKit来显示内容的 xff0c 目前jtextpa
  • win32sdk学习 richedit实现的一个简单记事本

    记录的源文件 xff0c 篇幅有点长 工具栏资源图片 bmp格式 notepad h文件 NOTEPAD H INCLUDED Copyright C name xff1a notepad author xff1a suju 日期 xff1
  • jquery的date input日期组件使用

    jquery的date input日期选择控件 xff0c 在一些日期表单上使用 xff0c 效果还是比较好的 官方介绍和下载地址 http jonathanleighton com projects date input 使用前需要导入j
  • ProgressBar的简单使用

    ProgressBar滚动体在安卓程序中使用也计较多 ProgressBar的几个常用属性和方法 android max 61 34 200 34 滚动条最大值 android progress 61 34 0 34 滚动条当前值 andr
  • 简单的使用jni调用java方法

    jni中调用java方法分几步 先使用FindClass方法获取指定类class xff0c 在使用GetStaticMethodID方法或者GetMethodID获取静态和非静态的方法id 在使用CallObjectMethod或者Cal
  • 安卓使用http下载文件

    在安卓中 xff0c 可以直接用java的java net URL包访问网络下载数据 不同的是 xff0c 安卓程序需要权限 xff0c 需要在AndroidManifest xml文件中声明权限 lt 网络权限 gt lt uses pe
  • 又要整黑科技了,一个失误引发的故事

    每天三分钟 xff0c 看一篇小文章 xff0c 学一个小技能 故事发生在某个下午 xff0c 小S半瞌睡状态坐在电脑前 xff0c 这个时候 xff0c 弹出一个微信消息 这次发布的活动 xff0c 好像不能在他们的小程序上搜索到 xff
  • c tcp网络编程

    include lt stdio h gt include lt string h gt include lt pthread h gt include lt unistd h gt include lt sys socket h gt i

随机推荐

  • vue自定义响应式进度条组件,包含线形和圆形进度条

    由于项目需要刚接触vue不久 xff0c 发现vue是真的好用 xff0c 性能又好 xff0c 做了一个小的demo 详细记录一下 xff1a 这是个进度条组件 线形进度条和圆形进度条 xff0c 进度成功显示100 并且颜色会成为绿色
  • [C++] 十进制转十六进制

    循环 整除 求余 判断 问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式 它有0 1 2 3 4 5 6 7 8 9 A B C D E F共16个符号 xff0c 分别表示十进制数的0至15 十六进制的计数方法是满16进
  • 基于Simulink的FIR滤波器设计与仿真--初识matlab

    一直对信号分析与处理有着比较浓厚的兴趣 xff0c 只可惜数学水平挺一般 xff0c 难以将兴趣发展为job xff0c 因此就蜻蜓点水了 公司里的几乎人人都会simulink xff0c 而我是十足的门外汉 看别人用得行云流水总是挺眼馋的
  • 头文件定义并初始化变量的问题

    一个经典错误 在a h头文件中定义变量temp并初始化 xff0c 即显式初始化 int temp 61 0 xff1b a c b c文件中都包含了a h头文件 xff0c 则在编译时会出现 xff1a multiple definiti
  • 串口调试小节之二 串口通讯原理

    我们以接收方为例 xff0c 详细讲解串口通讯的简单原理 xff0c 一个串口数据的接收情况基本如下 xff1a 主要分了三层 xff1a 1 硬件层 xff1a 负责将比特位转换成字节型数据 xff0c 并且将数据传输的通讯状态记录下来
  • 串口调试小节之三 Linux串口应用层编程注意

    这里不打算很详细的介绍该如何编写Linux 代码 xff0c 这种代码在百度或者开源项目一找一大堆 xff0c 这里只对常用会出错的地方做一些介绍 xff0c 防止掉入这些陷阱 1 关于波特率设置 xff1a 关于波特率设置的部分看起来简单
  • <ROS> 机器人描述--URDF和XACRO

    1 关于URDF的一些杂谈 URDF Unified Robot Description Format 是一种特殊的xml文件格式 作为机器人的一种描述文件 在ROS里面大量使用 接触ROS比较久的同学 应该会经常见到一种类似命名的包 pa
  • 网络基础知识之报文格式介绍

    1 以太网数据帧头部 DMAC xff1a 目的MAC地址 xff0c 长度6个字节 SMAC xff1a 源MAC地址 xff0c 长度6个字节 TYPE xff1a 类型字段 xff0c 表明上层是哪种协议 xff0c IP协议是0x8
  • C# 摘要认证(digest authentication) IETF RFC 2617

    背景 xff1a 最近在对接一个公安局数据接口相关的这块业务 xff0c 基于HTTP RESTFUL的接口API xff0c 请求时需要做用户认证 厂家只给提供了JAVA的demo 由于业务比较分散需要用C 来进行业务交互 解决过程 首先
  • 字节序(大小端)理解

    一 概念 字节序 xff0c 就是 大于一个字节类型的数据在内存中的存放顺序 是在跨平台和网络编程中 xff0c 时常要考虑的问题 二 分类 字节序经常被分为两类 xff1a 1 Big Endian xff08 大端 xff09 xff1
  • HTTP请求报文

    HTTP请求报文 xff1a HTTP请求报文由3部分组成 xff08 请求行 43 请求头 43 请求体 xff09 请求行 xff1a 是请求方法 xff0c GET和POST是最常见的HTTP方法 xff0c 除此以外还包括DELET
  • Python requests HTTP验证登录(解决401错误)

    1 场景 1 xff09 用户输入完网址后 xff0c 浏览器直接弹出需要输入用户名 密码 PS xff1a 此时输入用户名密码即可登录 xff0c 或者直接带着用户名密码访问网站 假设url为 http xxx yyy zzz 用户名为a
  • CANopen学习笔记

    CANopen学习笔记 1 TPDO和RPDO都是针对从站来说的 xff0c 协议上没有有讲任何一个关于主站的概念 xff0c 协议就只是定义从站 xff0c 没有定义主站任何东西 TPDO xff1a 从站 lt 主站 RPDO xff1
  • MS5611气压传感器手册勘误

    说是勘误其实也不能完全算是勘误 xff0c 只能说是防止各位看官对手册的错误解读 前几天调试MS5611这款气压计 xff0c 按照手册来计算发现无论如何气压值都是不对的 xff0c 比如说我这的1020mbar xff08 前几天用BMP
  • 异常处理方式——抛出处理

    异常的处理方式2 抛出处理 throw throws 抛出处理注意的细节 xff1a 1 如果一个方法内部抛出了一个异常对象 xff0c 那麽必须在方法上声明抛出 2 如果调用了一个声明抛出异常类型的方法 xff0c 那么调用者必须要进行处
  • socket实现UDP通信

    UDP与TCP不同 xff0c 是一种无连接的通信方式 xff0c 相比TCP而言更加灵活 利用socket实现UDP的方式相比TCP而言也更加简单 发送方 xff1a 1 初始化套接字 2 创建socket 3 利用sendto发送数据
  • C语言之#define用法入门详解

    一 define的基本语法 在C语言中 xff0c 常量是使用频率很高的一个量 常量是指在程序运行过程中 xff0c 其值不能被改变的量 常量常使用 define来定义 使用 define定义的常量也称为符号常量 xff0c 可以提高程序的
  • 棋盘格自动生成器——四种格式(格雷码棋盘格、圆点、二维码棋盘格)

    棋盘格生成器可以生成上面四种格式的标定板 想要多大想要几行几列都可以动态设置 非常好用 对于自己写代码或用cad画都比较浪费时间 这个生成器可以立刻生成pdf 只要打印机不设置缩放 即可正常尺寸打印 非常非常好用 介绍给大家这个好用的地址
  • python爬虫-验证码的处理

    在爬取网页数据时 xff0c 经常出现需要登录账户且要输入验证码的情况 以http www santostang com wp login php action 61 register该网页为例 xff0c 需要先使用浏览器的检查功能找到f
  • HTTP协议的解码和编码

    HTTP协议的解码和编码 编码规范URL的编码与解码 编码 规范实战 xff1a 使用fiddler来抓住http请求 相当于各省各地的人说不同的话 xff0c 大家互相听不懂 xff0c 那么http就相当于有一个翻译器 xff0c 能够