Python UnicodeDecodeError:&x27;ascii';编解码器可以';t解码字节0xe3

Python UnicodeDecodeError:&x27;ascii';编解码器可以';t解码字节0xe3,python,python-2.7,python-unicode,mime-mail,Python,Python 2.7,Python Unicode,Mime Mail,UnicodeDecodeError:“ascii”编解码器无法解码字节0xe3 我在py 2.7中为该行运行邮件脚本时遇到了这个问题 附加(MIMEText(welcome_msg+htmlMessageContent+footer_msg,'html'))要连接的字符串的一个元素 welcome_msg + htmlMessageContent + footer_msg 是Unicode,另一个不是。连接字符串时,Python会将它们全部转换为公共类型(Unicode),就像将整数添加到浮

UnicodeDecodeError:“ascii”编解码器无法解码字节0xe3

我在py 2.7中为该行运行邮件脚本时遇到了这个问题


附加(MIMEText(welcome_msg+htmlMessageContent+footer_msg,'html'))

要连接的字符串的一个元素

welcome_msg + htmlMessageContent + footer_msg
是Unicode,另一个不是。连接字符串时,Python会将它们全部转换为公共类型(Unicode),就像将整数添加到浮点值时一样。但是到Unicode的默认字符串转换为ascii,如果字符串包含非ascii字符,则转换将失败

找出哪个字符串不是Unicode。为此,您可以使用
type()
。在对
unicode()
的调用中包装该字符串,该调用解释如何解释
'\xe3'
。 例如,如果
“\xe3”
应解释为
“ã”

unicode(mystring, encoding='Latin-1')

然后您的连接应该可以工作。

不要假设字符串是utf-8编码的。请看这里:这一可能的重复显然假定另一个stringtis Latin-1可能完全错误。真正的解决办法是知道你拥有什么,并从中吸取教训。这是一个猜测,也是一个合理的猜测。如果OP不希望“\xe3”被解释为“ã”,那么他需要找到他需要的编码。但是为了提供一个可测试的解决方案,我必须输入一个真实的编码名称。在我看来,用
encoding='your encoding go here'
回答这个级别的问题并没有多大帮助。你的评论假设OP知道什么是编码。问题更多的是OP发布了一个根本不完整的问题,但我认为,值得指出的是,盲目地应用解决方法而不正确地理解它只会引入新的错误。我必须对第一个和最后一个字符串进行编码,以消除错误