Python 将 ISO 编码为 UTF8

发布于 2024-08-30 10:27:06 字数 247 浏览 0 评论 0原文

我正在尝试使用 Python 脚本(Python 2.5 和 PyPy)阅读我的电子邮件 我的一些结果不是 ASCII 格式的,我得到的字符串如下:

=?ISO-8859-7?B?0OXm7/Dv8d/hIPP07+0gyuno4enx/u3h?='

有什么方法可以解码它并转换为 utf-8 以便我可以处理它? 我尝试了 .decode('ISO-8859-7') 但我得到了相同的字符串

I am trying to read my emails using a Python script (Python 2.5 and PyPy)
Some of my results are not in ASCII and i get strings like this:

=?ISO-8859-7?B?0OXm7/Dv8d/hIPP07+0gyuno4enx/u3h?='

Is there any way to decode it and convert to utf-8 so that i can process it?
I tried .decode('ISO-8859-7') but i got the same string

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傲世九天 2024-09-06 10:27:06
import email.header as eh

unicode_data= u''.join(
    str_data.decode(codec or 'ascii')
    for str_data, codec
    in eh.decode_header('=?ISO-8859-7?B?0OXm7/Dv8d/hIPP07+0gyuno4enx/u3h?='))
# unicode_data now is u'Πεζοπορία στον Κιθαιρώνα'

您应该在这里使用 unicode_data 。但是,如果您(认为您)需要 UTF-8 编码的字符串,您可以:

utf8data= unicode_data.encode('utf-8')

更新:我更改了 .decode 调用以适应 codec的情况>无(例如eh.decode_header('plain text')

import email.header as eh

unicode_data= u''.join(
    str_data.decode(codec or 'ascii')
    for str_data, codec
    in eh.decode_header('=?ISO-8859-7?B?0OXm7/Dv8d/hIPP07+0gyuno4enx/u3h?='))
# unicode_data now is u'Πεζοπορία στον Κιθαιρώνα'

You should work with unicode_data here. However, if you (think you) need UTF-8 encoded string, you can:

utf8data= unicode_data.encode('utf-8')

Update: I changed the .decode call to cater for cases where the codec is None (e.g. eh.decode_header('plain text'))

软甜啾 2024-09-06 10:27:06

阅读 MIME 编码Base64 编码base64 模块 将会很有用。

Read up on MIME encoding and Base64 encoding. The base64 module will be useful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文