2010-09-15 10 views
0

je le code suivant:Python encodage char

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()) 

L'e-mail arrive avec à © comme son corps au lieu de l'attendre é

J'ai essayé:

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

tous donnent le même résultat.

Comment faire pour que cela fonctionne?

Toute aide est appréciée. Merci à l'avance, J.

Répondre

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

Eh bien, quel est l'encodage du fichier source contenant ce code? Si c'est UTF-8, qui est un bon choix par défaut, écrire simplement le é vous aura donné la chaîne de deux octets '\xc3\xa9', qui, lorsqu'elle est vue comme ISO-8859-1, ressemble à é.

Si vous souhaitez utiliser littéraux de chaîne d'octets non-ASCII dans votre fichier source sans avoir à se soucier de ce que codant pour l'éditeur de texte est l'enregistrer comme, utilisez une chaîne évasion littérale:

msgtxt = '\xE9' 
+0

Ce n'était pas exactement le problème mais j'étais en fait en train de négliger l'encodage du fichier source, son fonctionnement maintenant, merci pour l'input.J – OldJim

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

Sans le u le texte sera dans le codage source. En tant que chaîne Unicode, msgtxt sera codé dans le jeu de caractères indiqué.