将字节字符串转换为 Base64 编码的字符串(输出不是字节字符串)

2024-05-06

我想知道是否可以将从读取文件中获得的字节字符串转换为字符串(所以type(output) == str)。到目前为止我在谷歌上找到的都是这样的答案如何对 PNG 图像进行 Base-64 编码以便在 CSS 文件的 data-uri 中使用? https://stackoverflow.com/q/6375942/1256925,这看起来确实可以在 python 2 中工作(如果我没记错的话,字符串无论如何都是字节字符串),但它在 python 3.4 中不再工作了。

我想要将此生成的字节字符串转换为普通字符串的原因是我想使用此 base64 编码的数据存储在 JSON 对象中,但我不断收到类似于以下内容的错误:

TypeError: b'Zm9v' is not JSON serializable

这是一个简单的例子,说明了错误所在:

import base64
import json
data = b'foo'
myObj = [base64.b64encode(data)]
json_str = json.dumps(myObj)

所以我的问题是:有没有办法转换这个类型的对象bytes到一个类型的对象str同时仍然保持base64编码(所以在这个例子中,我希望结果是["Zm9v"]。这可能吗?


对我有用的是改变b64encode线路至:

myObj = [base64.b64encode(data).decode('ascii')]

这在中进行了解释https://stackoverflow.com/a/42776711 https://stackoverflow.com/a/42776711 :

Base64 被有意归类为二进制转换......Python 3 中的一个设计决策是强制分离字节和文本并禁止隐式转换。

接受的答案对我不起作用(Python 3.9)并给出错误:

Traceback (most recent call last):
  File "/tmp/x.py", line 4, in <module>
    myObj = [base64.b64encode(data)]
  File "/usr/lib64/python3.9/base64.py", line 58, in b64encode
    encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字节字符串转换为 Base64 编码的字符串(输出不是字节字符串) 的相关文章

随机推荐

  • Windows Phone 7 中的 ASCII 编码

    有没有办法在 Windows Phone 7 中使用 ASCIIEncoding 除非我做错了什么Encoding ASCII不存在 我需要它来进行 C gt PHP 加密 因为 PHP 在 SHA1 加密中仅使用 ASCII 有什么建议么
  • 如何使用 Qt Test 控制 QFileDialog?

    我有两个问题 我怎样才能访问QFileDialog并使用 Qt Test 模块在 文件名 字段中写入文件的路径 我这么问是因为我正在 Qt 中开发一些 GUI 测试 现在我需要打开一个文本文件 以下代码创建QFileDialog并获取文件路
  • 以编程方式清除 Silverlight 应用程序存储?

    我为一些客户发布了 Silverlight 应用程序 我在发布更新时遇到问题 我希望当用户最初加载网页时 如果他们的应用程序存储比上次更新网站时旧 那么this http www softcity com article internet
  • Outlook Interop C# 排序项目不起作用

    我偶然发现了一个问题 即 Outlook 项目表排序方法没有给出所需的结果 尽管方法 GetLast 始终返回相同的电子邮件项目 无论是升序还是降序 代码如下 Application olApp new Application NameSp
  • 如何从JSP中获取java类的对象

    我有一个结果jsp页面 它打印java类的字符串变量 有人能给我任何想法吗 我使用简单的 httpServlet 作为操作类 Class A String name public void setName this name callMet
  • 如何在机器人框架中使用“Run Keyword If”

    我刚刚开始研究机器人框架 我正在尝试使用Try Keyword If关键字 但我在网上看到的所有示例都在一行中显示了解决方案 而我在 RIDE 中有列和行 如果当前页面上有一个 ID 为 当前状态 的按钮 那么我想访问 URL www xy
  • React Router V5 在路由中使用上下文变量的最佳方式

    在我的应用程序中 我定义了路线 如下所示
  • lxml etree xmlparser 删除不需要的命名空间

    我有一个 xml 文档 我正在尝试使用 Etree lxml 解析它
  • 为什么持有引用的类可以复制?

    如果有一个类持有引用 我希望以下代码会惨败 但它可以编译 include
  • 停止所有 JavaScript 执行

    是否有一个相当于 php die 函数的 javascript 可以停止所有 javascript 包括将来的 ajax 请求回调 超时等 运行 注意 我无法在调试器中使用断点 因为 bug 存在于 ie8 中 并且调试器会阻止您在断点处向
  • Java Stream - 当键出现在列表中时进行分组

    我正在尝试按对象中显示为列表的值对集合进行分组 这是我的模型 public class Student String stud id String stud name List
  • 获取 gridview (Asp.net) c# 中选定复选框的 id

    我有两列 一列用于 id 另一列用于复选框 我在 gridview 中勾选了复选框 我想查看 gridview 中选中的值 如果选中复选框 那么我想要这些值 即 id ASP net foreach Gridviewrow gvr in G
  • Angular Template:如何绑定 RXJS Observable 并读取其属性?

    我创建了这个界面 interface IGame name string description string 我将它用作 Observable 并将其传递为Input to the Component Input public game
  • pandas 中的分箱和转换

    我有下面的数据框 A B 1 1 4 1 5 1 6 2 8 3 15 4 我想将数据框分箱并转换为下面的数据框 range A sum B 0 4 2 5 9 6 10 14 0 15 19 4 I tried groupby Group
  • 套接字发送并发保证

    如果我在两个进程 或两个线程 之间共享一个套接字 并且在这两个进程中我尝试发送一条阻塞的大消息 大于下划线协议缓冲区 是否可以保证这两个消息将按顺序发送 或者消息可以在内核内部交错吗 我主要对 TCP over IP 行为感兴趣 但了解它是
  • php中UCS2/HexEncoded字符转UTF8

    我之前问过一个问题 从 UTF 8 获取 UCS 2 HexEncoded 字符串 我在以下链接中得到了一些人的帮助 UCS2 HexEncoded 字符 https stackoverflow com questions 1872773
  • Perl 字符串替换:匹配但不替换正则表达式的一部分

    假设我在 Perl 中有一个字符串 我正在尝试匹配并替换为以下内容 string s a zA Z find a zA Z replace g 如图所示 我想替换两侧被非字母字符包围的所有内容 但是 当我替换字符串时 我不想也替换这些字符
  • 如何使用 vue-toastification

    我刚刚将在 vue 3 中创建的项目迁移到 nuxt 3 以前我使用了 vue toastification 模块 但现在我不知道如何正确导入它 我的代码使用这个模块 import useToast POSITION from vue to
  • 在heroku上部署代码时出错

    我在 git hub 中有一个java脚本代码 上个月我在heroku上部署了很多次 没有出现任何问题 今天 当我想在heroku上部署完全相同的代码时 出现以下错误 The requested API endpoint was not f
  • 将字节字符串转换为 Base64 编码的字符串(输出不是字节字符串)

    我想知道是否可以将从读取文件中获得的字节字符串转换为字符串 所以type output str 到目前为止我在谷歌上找到的都是这样的答案如何对 PNG 图像进行 Base 64 编码以便在 CSS 文件的 data uri 中使用 http