UnicodeEncodeError: 'ascii' 编解码器无法对位置 134 中的字符 '\xf6' 进行编码:序号不在范围内 (128)

问题描述

我正在尝试创建一个包含发送电子邮件的 Python 程序,但我收到了 UnicodeEncodeError 错误。我见过的解决错误的所有解决方案都不适用于我的脚本。我试图在 for 循环中添加 receiver = str(u' '.join(receiver).encode('utf-8')) 但它不起作用。这是我的代码的一部分(如果您愿意,我可以发布整个代码):

werewolfs = []

def group_roles(group):
    for i in range(4):
        werewolfs.append(group[i])


group_roles(group1)
group_roles(group2)
group_roles(group3)

for receiver in werewolfs:
    receiver = str(u' '.join(receiver).encode('utf-8'))
    DATA = 'From:%s\nTo:%s\nSubject:%s\n\n%s' % (my_email,receiver,subject,werewolf_mail)
    server.sendmail(my_email,DATA)

这是整个错误信息:

Traceback (most recent call last):
  File "/home/dominikb/.config/JetBrains/PyCharmCE2020.3/scratches/werewolf.py",line 131,in <module>
    server.sendmail(my_email,DATA)
  File "/usr/lib/python3.9/smtplib.py",line 859,in sendmail
    msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xf6' in position 134: ordinal not in range(128)

有人知道解决办法吗?那太好了。提前致谢!

解决方法

str() 尝试使用默认字符编码器对 unicode 字符 (\xf6) 进行编码的问题。要解决您的问题,您可以删除 str() 并仅使用 .encode()

receiver = u' '.join(receiver).encode('utf-8')
,

我解决了我的问题!我发现它不起作用,因为我写的消息中有德语字母,如 ä、ö、ü 和 ß。我删除了它们并且它起作用了。有没有办法用这样的字母在python中写一封电子邮件?