java url base64编码-java url中文编码
目录
一、base64编码介绍
用记事本打开exe、jpg、pdf等文件时,我们会看到很多乱码,因为二进制文件中包含很多不能显示和打印的字符,所以如果要用记事本等文本处理软件处理二进制数据,你需要一个二进制到字符串的转换方法。 Base64 是最常见的二进制编码方法之一。
Base64是一种从任意二进制到文本字符串的编码方式,常用于传输URL、cookie、网页中的少量二进制数据。 Base64 是一种用 64 个字符表示任意二进制数据的方法。 原理很简单。 首先java url base64编码,准备一个包含 64 个字符的数组 ['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/'] ,然后对二进制数据进行处理java url base64编码,每组3个字节,一共3x8 =24bit,分为4组,每组恰好6位,所以我们得到4个数字作为索引,并且然后查表得到对应的4个字符,就是编码后的字符串。
每组6位-> 6位的二进制取值范围为:000000-111111(0-63)正好可以取64个字符
因此,Base64编码会将3字节的二进制数据编码成4字节的文本数据,长度增加了33%。 好处是编码后的文本数据可以直接显示在邮件正文、网页等中。如果要编码的二进制数据不是3的倍数,最后还剩1、2个字节怎么办? base64用\x00字节在末尾补足,然后在编码末尾加上1或2=号,表示补了多少字节,解码时会自动去掉。
2.在python中使用base64
可以直接使用python自带的包base64,base64.b64encode base64.b64decode分别是编码和解码
import base64 if __name__ == "__main__": bytes_str = b"i love beijing" # 编码 # b'aSBsb3ZlIGJlawppbmc=' base64_string = base64.b64encode(bytes_str) print(base64_string) # 解码 # b'i love beijing' source_str = base64.b64decode(basgbktLPtZJe64_string) print(source_str)
由于字符+和/可能会出现在标准的Base64编码之后,不能直接作为URL中的参数,所以还有另一种url安全的base64编码,就是将字符+和/分别改成-和_
bytes_str =js b"i love tiananmen" # 编码 base64_string = base64.urlsafe_b64encode(bytes_str) print(base64_string) # 解码 source_str = base64.urlsafe_b64decode(base64_string) print(source_str)
注意:不管是哪种编码方式,输入base64的参数都是bytes的形式,所以上面的参数byte_str前有ab
3.申请
将图片(视频)编码成字符串
以下代码将图片编码为字符串。 后面我们可以将图片直接以字符串的形式保存到文件中,方便阅读,因为在某些情况下访问字符串比直接保存图片更方便。 比如先把图片存入数据库
if __name__ == "__main__": import requests from PIL import Image from io import BytesIO import base64 response = requests.get('https://ts1.cn.mm.bing.net/th/id/R-C.fd4056c8c00979ab8561f8db8219c2ae?randroidik=JPk67EIYaKIS3A&riu=http%3a%2f%2fimg.mm4000.com%2ffile%2fa%2fa2%2f869bd2bd6a.jpg&ehk=2z%2bPuRHJOYtkm9ICs8fPs0EJbE96jJX2E8QyrVP5kyQ%3d&risl=&pid=ImgRaw&r=0') if response.status_code != 200: raise ValueError("request Error!") # 将请求结果存入io中, 使用PIL以io的方式打开图片 img =编程客栈 BytesIO(response.content) pict = Image.open(img) # 改变图像大小,也可是其他操作 pict = pict.resize((100, 100), Image.ANTIALIAS) # 将图片存入io中, PIL格式的图片变成byte格式 img_buff = BytesIO() pict.save(img_buff, "jpeg") # 使用base64把byte对象编码成字符串 img_str = base64.urlsafe_b64encode(img_buff.getvalue()) print("image string:", img_str.decode("utf-javascript8")) img.close() # 将字符串解码成图片 bytes_image = base64.urlsafe_b64decode(img_str) image_buff = BytesIO(bytes_image) image = Image.open(image_buff) image.show()
结果如下:
python中base64编码的这篇文章到此结束。 更多关于python base64编码的内容,请搜索我们之前的文章或者继续浏览下面的相关文章。 希望大家以后多多支持!
本文标题:python中base64编码介绍