Python imaplib:正确显示非 ASCII 字符

2024-02-11

我正在使用 Python 3.5 和imaplib从 GMail 获取电子邮件并打印其正文。正文包含非 ASCII 字符。 这些以一种奇怪的方式“编码”,我不知道如何解决这个问题。

import email
import imaplib

c = imaplib.IMAP4_SSL('imap.gmail.com')
c.login('[email protected] /cdn-cgi/l/email-protection', 'password')

c.select('Inbox')
_, data = c.fetch(b'12345', '(RFC822)')

mail = data[0][1]
message = email.message_from_bytes(mail)
payload = message.get_payload()

body = mail[0].as_string()
print(body)

Gives

>> ... Mit freundlichen Gr=C3=BC=C3=9Fen ...

而不是想要的

>> ... Mit freundlichen Grüßen ...

在我看来,这不是编码问题,而是转换问题。但是我如何告诉 Python 正确转换字符呢?有没有比较方便的图书馆?


文本编码为带引号的可打印编码 https://en.wikipedia.org/wiki/Quoted-printable,这是一种对 ascii 文本中的非 ascii 字符进行编码的方法。您可以使用 python 对其进行解码quopri https://docs.python.org/3.7/library/quopri.html#module-quopri module.

>>> import quopri
>>> bs = b'Gr=C3=BC=C3=9Fen'

>>> # Decode quoted-printable to raw bytes.
>>> utf8 = quopri.decodestring(bs)

>>> # Decode bytes to text.
>>> s = utf8.decode('utf-8')
>>> print(s)
Grüßen

你可能会发现quoted-printable是电子邮件的值content-transfer-encoding header.

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

Python imaplib:正确显示非 ASCII 字符 的相关文章

  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • Python urllib.request.urlopen:AttributeError:'bytes'对象没有属性'data'

    我正在使用 Python 3 并尝试连接到dstk 我收到错误urllib包裹 我对SO进行了很多研究 但找不到与这个问题类似的东西 api url self api base street2coordinates api body jso
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • Python Tkinter:在 for 循环中将函数与标签绑定

    我正在动态创建标签for loop using tkinter 我不知道将创建多少个标签 但单击每个标签时 必须使用特定参数调用特定函数 为此 我使用以下代码 for link in list of links link label Lab
  • zend框架自定义验证类

    我正在编写一个自定义验证器 它将检查电子邮件是否存在 如果数据库中已存在该电子邮件 则该表单无效 我很难找出自定义 Zend Validation 类的辅助路径和命名空间 我想调用类 My Validate EmailUnique 但我不断
  • java中的条形图

    我想更改每个条形的高度 例如红色部分为 10 蓝色部分为 20 但是当我增加高度值时 它会从底部增加图表 而我希望更改到顶部 你知道这有什么问题吗 import java awt Color import java awt Dimensio
  • 永远保留此构建选项 - Jenkins

    我知道有一个Keep this build forever詹金斯上的按钮 对此我有一个疑问 我有一个由一项主要工作和许多子工作 分为各个阶段 组成的配置 我想知道如果我点击主作业中的按钮 子作业中的文物是否也会永久存储 或者我应该进入每个子
  • 如何检索 YouTube 上直播活动的开始时间?

    我正在尝试返回并将已完成或正在进行的实时事件与现实世界的时间戳 例如 Twitter 的逐个播放 同步 我不拥有相关的实时事件 显然 这仅对可以倒带或重播的事件有用 例如许多与游戏相关的广播 有没有办法检索现场活动的开始时间 我尝试过以下方
  • 无法使用创建的新用户登录 sql server

    我创建了一个名为登录测试 SQL 身份验证 然后我创建了一个名为usertest通过此登录 用户创建成功 我将身份验证模式更改为混合模式 并重新启动了 SQLSERVERAGENT 和 MSSQLSERVER 服务 当我尝试使用创建的新用户
  • 我可以将 TypeScript 类型定义为 typeof 的所有可能结果值吗?

    我希望将类型定义为使用typeof某物上的操作员 本质上 我正在寻找一种更快的方法来做到这一点 而不需要任何类型的中间函数或变量 function getTypeOf value any return typeof value type T
  • 从 dcm4che2 迁移到 dcm4che3

    我使用了下面提到的来自此存储库的 dcm4che2 APIhttp www dcm4che org maven2 dcm4che http www dcm4che org maven2 dcm4che 在我的java项目中 dcm4che
  • 从 Linux 连接到 Windows IPython 内核

    我有一台 Windows 机器 我在其中启动 IPython 内核 来做一些在另一台机器上不可能做的事情 我有一台 Linux 机器 我想从它连接到 Windows 机器上运行的 IPython 内核 我可以通过 SSH 从 Linux 计
  • Django 二进制或 BLOB 模型字段

    我有一个 C 程序 可以将 pdf 插入 MySQL 数据库中 现在我想通过 django 检索该 pdf 但 django 的models FileField需要一个 上传到 参数 这意味着在幕后它实际上将文件存储在文件系统上而不是数据库
  • Magick Image 在图像后面创建阴影

    已经尝试了一段时间 现在尝试使用以下代码获得阴影 using MagickImage image new MagickImage C Users David Pictures YnTf9 png MagickImage shadow new
  • VB.NET:如何动态选择列表视图项?

    我需要根据之前选择的内容动态选择列表视图中的项目 从数据库中检索过去选择的项目并将其添加到 Arraylist 中 然后需要从许多不同的列表视图中选择这些项目 像这样通过索引执行此操作listRef1 Items 2 Checked Tru
  • 内容后出现随机空白(Webkit 浏览器错误)

    我的服务页面底部出现未知的空白 我在用着column count 2 将图像分成两列 更新 这是 Webkit 浏览器问题 问题是底部的额外空间mainCont 左侧栏 如果图像全部对齐 那么就会有大约 30 像素的不需要的空白 不过 如果
  • 运行 Haskell 代码时的架构 x86_64、Haskell OSX iconv

    当我在计算机上编译有效的 Haskell 代码时 它抛出了架构 x86 64 的错误 它在我朋友的具有相同架构的计算机上运行良好 ghc make BoardMain hs Linking BoardMain Undefined symbo
  • Android Studio - Vanguard 检测到(检测到不兼容的软件),但它甚至没有作为进程安装或打开

    Android studio 昨天工作正常 今天我启动了 android studio 突然它抛出 检测到不兼容的软件 我没有安装 Riot Vanguard 不久前删除了它 我仔细检查以找到安装 我找不到东西 为什么Android stu
  • 如何使用 NGINX 入口控制器从 Cloudflare 恢复原始客户端 IP

    我使用 Cloudflare 作为 CDN 它隐藏了客户端的真实 IP 地址 我使用 NGINX 入口控制器作为在 Google Kubernetes 引擎中运行的负载均衡器 所以我尝试恢复原始 IP 地址并尝试点击此链接https sup
  • 夏令时时间戳计算

    中欧夏令时从三月的最后一个星期日开始 我们将时钟设置为 02 00 至 03 00 如果我在数据库请求中进行时间戳计算 假设在 01 59 会发生什么情况 UPDATE sessions SET aliveuntil CURRENT TIM
  • 如何将包含(图像标签和一些文本)的 HTML 代码或数据转换为图像以供下载

    我想将一些 Html 代码渲染为图像以供我的网站下载 我正在使用 html2canvas 它可以很好地为文本创建图像 但我想从 html div img text paragraph 创建图像 我正在使用下面的代码将 html 渲染为图像
  • 将二进制数转换为十进制数

    我需要一个程序来将 Java 或 C 中的二进制数转换为十进制数 有人可以帮助我吗 Java String binary 110010101011 int decimal Integer parseInt binary 2 C includ
  • Python imaplib:正确显示非 ASCII 字符

    我正在使用 Python 3 5 和imaplib从 GMail 获取电子邮件并打印其正文 正文包含非 ASCII 字符 这些以一种奇怪的方式 编码 我不知道如何解决这个问题 import email import imaplib c im