编解码(接口测试常用场景)

实用工具

有时候我们不能一眼区分数据源是什么编码格式
uTools-编码小助手插件很好用
在这里插入图片描述
我们只需要选中数据源然后鼠标中间键唤起uTools后就可以自动识别是什么编码-然后进行解码即可
在这里插入图片描述
某些图片上传接口的请求参数需要将图片转换成base64编码格式在转换成unicode编码在转换成URL编码
下面依次介绍

base64编解码

因为图片使用二进制方式打开的,所以需要将二进制数据流转换为base64

Base64就是从ASCII编码中挑选出64个字符和二进制一个字节8bits进行映射,为之所以选择ASCII编码,这是因为ASCII编码是最早出现的编码形式,几乎所有的计算机应用都对其完全支持,不会出现数据传输过程中的内容转换,非常的安全。

base64编码(图片转base64)

import base64

f=open('logo.png','rb') #二进制方式打开图文件
ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
f.close()
print(ls_f,type(ls_f))

在这里插入图片描述

这个时候还是base64编码格式,一般情况是不能够继续使用的,还需要转换成python运行处理的是unicode码,下面会紧接着介绍encode()和decode()

base64解码(base64转图片)

import base64
bs='iVBORw0KGgoAAAANSUhEUg....' # 太长了省略
imgdata=base64.b64decode(bs)
file=open('2.jpg','wb')
file.write(imgdata)
file.close()

unicode编码

ASCII编码转换成unicode字符串编码

import base64

f=open('logo.png','rb') #二进制方式打开图文件
ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
ls_f=ls_f.decode("ascii") #ASCII编码转换成unicode字符串编码
f.close()
print(ls_f,type(ls_f))

在这里插入图片描述

unicode字符串编码转换为ASCII编码

import base64

f=open('logo.png','rb') #二进制方式打开图文件
ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
ls_f=ls_f.decode("ascii") #ASCII编码转换成unicode字符串编码
ls_f=ls_f.encode("ascii") #unicode字符串编码转换为ASCII编码
f.close()
print(ls_f,type(ls_f))

在这里插入图片描述

url编解码

将文件数据流转为base64再转为unicode字符串编码还是不能直接作为接口的请求参数使用,由于数据中还有一些特殊符号,所以还需要转换成url编码
需要编码的特殊符号
在这里插入图片描述

下面简单总结一下,哪些字符需要编码,分为以下三种情况:
ASCII 表中没有对应的可显示字符,例如,汉字。 
不安全字符,包括:# ”% <> [] {} | \ ^ ` 。 
部分保留字符,即 & / : ; = ? @ 。

url编码

  • urlencode 对字典进行编码
  • quote 对字符串进行编码
import base64
from urllib import parse

f=open('logo.png','rb') #二进制方式打开图文件
ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
ls_f=ls_f.decode("ascii") #ASCII编码转换成unicode字符串编码
ls_f=parse.quote(ls_f) #url编码
f.close()
print(ls_f,type(ls_f))

url解码

  • unquote对编码后的 URL 进行还原
import base64
from urllib import parse

f=open('logo.png','rb') #二进制方式打开图文件
ls_f=base64.b64encode(f.read()) #读取文件内容,转换为base64编码
ls_f=ls_f.decode("ascii") #ASCII编码转换成unicode字符串编码
ls_f=parse.quote(ls_f) #url编码
ls_f=parse.unquote(ls_f) #url解码
f.close()
print(ls_f,type(ls_f))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要站在顶端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值