2010-09-15 63 views
0

我有以下代码:Python中字符编码

msgtxt = "é" 

msg = MIMEText(msgtxt) 
msg.set_charset('ISO-8859-1') 
msg['Subject'] = "subject" 
msg['From'] = "[email protected]" 
msg['To'] = "[email protected]" 
serv.sendmail("[email protected]","[email protected]", msg.as_string()) 

电子邮件到达与©作为它的身体,而不是预期的é

我曾尝试:

msgtxt = "é".encode("ISO-8859-1") 
msgtxt = u"é" 
msgtxt = unicode("é", "ISO-8859-1") 

所有结果都一样。

如何使这项工作?

任何帮助表示赞赏。 由于提前,J.

回答

1
msgtxt = "é" 
msg.set_charset('ISO-8859-1') 

那么,什么是包含此代码的源文件的编码?如果是UTF-8,这是一个很好的默认选择,只需编写é将给出两字节字符串'\xc3\xa9',当它看作ISO-8859-1时,看起来像é

如果你想在源文件中使用非ASCII字节字符串常量,而不必担心什么编码的文本编辑器将其保存为,使用字符串字面逃生:

msgtxt = '\xE9' 
+0

这不完全是问题,但我实际上忽略了源文件编码,现在它的工作,谢谢你的输入.J – OldJim 2010-09-15 23:48:54

0
# coding: utf-8  (or whatever you want to save your source file in) 
msgtxt = u"é" 
msg = MIMEText(msgtxt,_charset='ISO-8859-1') 

如果没有u,则文本将采用源编码。作为一个Unicode字符串,msgtxt将被编码在指定的字符集中。