gpt4 book ai didi

python - 为什么 Python 试图自动编码我的 Unicode 字符串?

转载 作者:行者123 更新时间:2023-11-28 22:46:23 26 4
gpt4 key购买 nike

<分区>

我正在尝试从以 ISO-8859-1 编码的文件中读取一堆电子邮件消息,然后将它们(部分)写出到具有 UTF-8 编码的 JSON 文件中。我目前有一个程序可以读取它们并生成具有 str 类型属性的对象,其中包含消息的各个字段。我想将这些 str 字符串(编码的位串)转换为 unicode 字符串(抽象的 Unicode 对象),这样我以后可以在写出时用 UTF-8 重新编码它们文件。所以我使用strdecode方法,像这样:

msg_dict = {u'Id' : message.message_id.decode('iso-8859-1'), 
u'Subject' : message.subject.decode('iso-8859-1'),
u'SenderEmail' : message.sender_email.decode('iso-8859-1'),
u'SenderName' : message.sender_name.decode('iso-8859-1'),
u'Date': message.date.isoformat()}

根据我读过的文档,decode 应该获取 str 对象,根据给定的编码解释它的字节,并返回一个 unicode 表示这些字符的对象。但是当我运行我的代码时,我得到了这个错误:

  File "/home/edward/long/path/omitted/dumpMails.py", line 38, in <module>
u'Subject' : message.subject.decode('iso-8859-1'),
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128)

当我调用解码时,我怎么会得到一个编码错误?我最好的猜测是 Python 已决定使用默认编码自动将返回的 unicode 转换回 str。但它为什么要这样做呢?这与将 unicode 放入字典有关吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com