如何解决url中的base64通过Python转换后无法打开

记python对于base64编码之后的二进制字符串进行解码时出现的问题 问题描述 ios app 端,使用 swift 将 pdf 文件进行 base64 编码之后,post 到服务端。服务端是 python。服务端接收到数据之后,使用 base64_decode() 进行解码,然后将二进制写回文件。 但是发现写回文件之后,pdf 文件格式错误,无法打开。 原因1 rfile.decode() swift 进行 base64 编码的时候,最终字符串中会生成很多 “+” 号。但是 python 端接收到数据,使用 self.rfile.read(length).decode('u 阅读详情

问题描述

今天晚上折腾base64转图片折腾了很久,url中获取的base64转图片老是打不开。后来对比了一下url获取的base64和图片在Python中转化成的标准base64,发现前者有很多的%0

在这里插入图片描述

解决方案

网上几乎没有人讨论这个问题,为此我找了好久,最后还是自己总结出来的:
根本原因在于base64转为url的时候会自动将一些字符转为"%xx"的格式。所以我们从url得到的base64要进行url反转义

在Python中可以加入以下代码

import urllib

standard_b64 = urllib.parse.unquote(basecode_url)
#这里的basecode_url指的是从url中获取的base64代码
#经过这样转化后得到的才是标准的base64,也就是变量standard_b64中所存储的字符串
pic = base64.b64decode(standard_b64)
#这一步就是转码的步骤啦

各位朋友如果也遇到这样的问题且正好看到这篇文章,能用我的方法解决,那么我感觉我熬的夜也值了。

Base64和Base64URL加解密 本文基于他人的原创,整理成一份文档,希望大家共同学习,同时谢谢以下两位同学和廖雪峰的原创。 https://www.liaoxuefeng.com/wiki/897692888725344/949441536192576 https://blog.youkuaiyun.com/weixin_42506905/article/details/82053888 https://blog.youkuaiyun.com/o... 阅读详情

相关推荐

Python Base64解码

Base64编码通过将二进制数据分成每24位(3字节)一组,然后将每组24位数据转换为4个可打印的ASCII字符,从而实现了二进制数据到文本的转换。这种编码方式主要用于在电子邮件、MIME协议、网页传输等领域,确保二进制数据在文本环境中能够正确、安全地传输。Python的base64模块为处理Base64编码数据提供了强大的功能。通过掌握编码方式的选择、错误处理机制以及高级功能的使用,我们可以更加灵活地处理各种Base64编码场景。

Python老吕的博客 3090

HTML img 元素无法显示 base64 图片的可能原因

比如,如果使用 UTF-8 编码的 HTML 页面中包含 GBK 编码的 base64 编码图片数据,就会导致图片无法正常解码和显示。但是,在 HTML 中使用 base64 编码图片时,如果 base64 编码中存在换行符,就会导致浏览器无法正确解码和显示图片。7、跨域问题:如果 base64 编码的图片数据是从其他域名或协议加载的,可能会受到浏览器的跨域限制而无法正常显示。8、网络传输问题:在网络传输过程中,如果 base64 编码的图片数据丢失、损坏或被篡改,就会导致图片无法正常显示。

风清扬的专栏 1万+

python进阶教程:在Python中使用base64模块处理字符编码的教程

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。 Base64的原理很简单,首先,准备一个包含64个字符的数组: ['A', 'B', 'C', ... 'a', 'b', 'c',

python基础学习教程 2638

java base64转图片保存到本地,图片破损,打不开,格式不支持

图片保存到本地,图片破损

微笑乀 1万+

Python常用模块 之 base64:处理 base64 编码和解码

Python常用模块 之 base64:处理 base64 编码和解码

孤寒者的博客 3万+

《涨知识啦29》-DBR的工作原理及其在VCSEL中的作用

分布式布拉格(Distributed Bragg Reflection,简称DBR)反射镜是垂直腔面发射激光器(Vertical-Cavity Surface-Emitting Laser,简称VCSEL)的重要组成部分。典型的DBR反射镜是由1/4ni波长厚度的高折射率和低折射率材料交替组成(ni是该层的折射率)。其反射率取决于组成对数、边界条件以及折射率差。 图1 布拉格反射镜的工作原理 DBR反射镜的工作原理如图1所示。根据反射原理,当光从光疏介质n1射向光密介质n2(折射率n2>n1)时,反

simucal的博客 7984

python 图片与base64互相转换

【代码】python 图片与base64互相转换。

m0_38056925的博客 850

数字IC后端PR阶段Innovus,ICC,ICC2修复short万能脚本分享

数字IC后端PR阶段Innovus,ICC,ICC2修复short万能脚本分享

weixin_37584728的博客 3460

Base64解码后的图片打不开

Base64解码图片常见问题。

思风而过 22万+

计算机组成原理汉字编码与校验设计实验报告(汉字国标码转区位码实验、汉字机内码获取实验、海明编码电路设计与海明解码)

这次实验利用logisim进行设计,进行了以下这四个实验,其中分为汉字国标码转区位码实验、汉字机内码获取实验、海明编码电路设计与海明解码,实验报告分为四个部分,在这四个部分中依次对四个实验的方案设计,设计思路进行了介绍

zhang2gongzi的博客 6万+

【智能教育实践】MOOPer数据集在个性化学习路径规划中的应用

本文探讨了如何利用MOOPer数据集实现从“千人一面”到“千人千面”的个性化学习路径规划。通过分析学习者与平台的交互数据(如练习、反馈、讨论)并结合知识图谱,系统能够动态诊断学生知识状态,并为其推荐最优学习序列。文章详细介绍了基于数据驱动的推荐系统核心技术,包括知识追踪、图谱关联挖掘及排序策略,旨在解决传统在线教育的僵化问题,提升学习效率与动力。

read5的博客 230

python中base64库用法详解

python中base64库用法详解

IT之一小佬的博客 5万+

【读代码】从claude skills到superpowers项目

最近claude skills成了大热门,今天一起看下GitHub 上的开源技能框架,他将“工作流”封装为“技能” (Skills)。本文尝试剖析该项目的技能粒度定义、多技能关联架构、应用逻辑等。与传统的 Function Calling 不同,Superpowers 中的 Skill 定义粒度并非“原子操作”,而是**“认知模式” (Cognitive Mode) 或“工作阶段”**。

kakaZhui的博客 1922

Base64编码和Base64Url编码

具体来说,Base64 URL 编码会使用下划线、减号和等号代替标准的 Base64 编码中的加号、斜杠和等号,以避免特殊字符在URL中引起的问题。Base64 编码是一种可逆的转换,可以将二进制数据编码为文本数据,并且可以将编码后的文本数据解码回原始的二进制数据。| Base64 字符 | Base64 URL 字符 | |-------------|------------------| | + | - | | / | _ | | = | 无 |在Python中,你可以使用标准库。

bill的博客 1649

Claude Code(8):使用 skill-creator 打造属于测试人员的 Skills

本文介绍了如何使用Claude Code的skill-creator工具快速创建测试相关的Skills。skill-creator是一个专门用于创建新Skills的Skill,相比手动创建更高效。文章详细演示了安装skill-creator的步骤,并通过创建"测试计划编写助手"的实战案例,展示了如何通过对话方式定义Skill名称、触发条件和功能需求。skill-creator会自动生成完整的SKILL.md文件和目录结构,用户只需确认即可完成Skill创建。

blues_C的博客 527

LeRobot 入门教程(十一)π0(Pi0)π0.5(Pi0.5)训练、推理、部署

本文介绍了Physical Intelligence公司开发的π₀和π₀.₅系列通用机器人控制视觉-语言-动作模型。π₀作为首款基础模型,融合流匹配、跨实体训练等技术,支持50Hz高频控制。π₀.₅是其升级版,通过异构数据协同训练解决开放世界泛化问题,在Libero基准测试中表现优异。文章详细说明了两个模型的安装要求、使用方法、训练策略及关键参数配置,包括混合精度训练、梯度检查点等优化技术,为机器人在多样化场景中的语义理解和动作控制提供了完整解决方案。

2506_90492529的博客 5051

Base64和Base64URL

转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001399413803339f4bbda5c01fc479cbea98b1387390748000 Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会看到一...

磨镜台的博客 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Python 中的url,Base64和MD5编码解码的使用

1.encode()和decode() 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes(字节)。 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。 将字符串和Bytes互相转换可以使用encode()和decode()方法。 如下所示: # 方法中不传参数则是以默认的utf-8编码进行转换 str_encode = "解除隔离吧!上帝".encode("utf-8") print(str_encode) str_d

菜鸡小白的成长记录 2214

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python中url解析 or url的base64编码

目录 from urllib.parse import urlparse, quote, unquote, urlencode1、解析url的组成成分:urlparse(url)2、url的base64编解码:quote(url)、unquote(url)3、字典变成一个字符串=&连接,并且被base64编码:urlencode(字典) from urllib.parse i...

weixin_30528371的博客 1355

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

python中url_python中url解析 or url的base64编码

目录from urllib.parse import urlparse, quote, unquote, urlencode1、解析url的组成成分:urlparse(url)2、url的base64编解码:quote(url)、unquote(url)3、字典变成一个字符串=&连接,并且被base64编码:urlencode(字典)from urllib.parse import url...

weixin_33280675的博客 856

python将本地图片转成url_[code]python转换url对应的图片为base64

功能步骤:通过url获取图片缩放图片图片数据放入内存bufferbuffer数据转化为base64编码特点:没有磁盘的存储步骤,图片的处理均在内存中。优势:没有磁盘的io,所以速度相对较快。代码:# coding=utf-8import urllib2import cStringIOfrom PIL import Imageimport base64def get_img_base64_from_...

weixin_39745013的博客 1661

python base64url

python相关学习资料:https://edu.51cto.com/video/4102.htmlhttps://edu.51cto.com/video/3832.htmlhttps://edu.51cto.com/video/4645.htmlPython Base64url编码解码:一个简单的指南 Base64...

weixin_35744849的博客 372

Python中Base64编码与解码

Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符(包括a-z、A-Z、0-9、/、+)来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识...

pengjunlee的博客 8万+

Python 中的 Base64 编码解码全解析

Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方式。它将二进制数据按每 3 个字节一组进行划分,每组 24 位,再将这 24 位分成 4 个 6 位的小组,每个 6 位小组的值对应 Base64 字符表中的一个字符,从而将二进制数据转换为文本形式。如果最后一组不足 3 个字节,会用进行填充。Base64 编码常用于在只支持文本数据的环境中传输二进制数据,例如在电子邮件中传输图片、在 URL 中传递二进制数据等。Python 的base64。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 4614

python中的URLEncode和Base64编码:技术详解与应用

URLEncode(百分比编码)是一种编码机制,用于在URI(统一资源标识符)中嵌入特定字符。由于URL中只允许包含一定范围内的字符,URLEncode用于将非法字符转换为合法字符,以便在URL中安全传输。Base64编码是一种二进制到文本的编码方法,用于将二进制数据转换为ASCII字符串。它常用于在不支持二进制数据的系统间传输数据,如电子邮件、URLs和Cookie。

weixin_43822401的博客 1978
下一篇: 忠告:使用pymysql的时候,不要用cursor.execute自带的格式化输入,尤其是sql中引号比较多的时候
C站UP主
博客等级 码龄8年 8粉丝 5原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值