decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

 

另外对于一些包含特殊字符的编码,直接解码可能会报错,可以使用对于的参数来设置。如:
s.decode("utf-8", "ignore") 忽略其中有异常的编码,仅显示有效的编码
s.decode("utf-8", "replace") 替换其中异常的编码,这个相对来可能一眼就知道那些字符编码出问题了。

从unicode转str,被看做是把一个信息文本编码为二进制字节流的过程,要用encode方法

 

 

发邮件代码范例:

 

[python] 
    1. #!/usr/bin/env python  
    2. # -*- coding: UTF-8 -*-  
    3.    
    4. from email.mime.multipart import MIMEMultipart  
    5. from email.mime.base import MIMEBase  
    6. from email.mime.text import MIMEText  
    7.    
    8. # python 2.3.*: email.Utils email.Encoders  
    9. from email.utils import COMMASPACE,formatdate  
    10. from email import encoders  
    11.    
    12. import os  
    13.    
    14. #server['name'], server['user'], server['passwd']  
    15. def send_mail(server, fro, to, subject, text, files=[]):   
    16.     assert type(server) == dict   
    17.     assert type(to) == list   
    18.     assert type(files) == list   
    19.    
    20.     msg = MIMEMultipart()   
    21.     msg['From'] = fro   
    22.     msg['Subject'] = subject   
    23.     msg['To'] = COMMASPACE.join(to) #COMMASPACE==', '   
    24.     msg['Date'] = formatdate(localtime=True)   
    25.     msg.attach(MIMEText(text))   
    26.    
    27.     for file in files:   
    28.         part = MIMEBase('application', 'octet-stream') #'octet-stream': binary data   
    29.         part.set_payload(open(file, 'rb'.read()))   
    30.         encoders.encode_base64(part)   
    31.         part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))   
    32.         msg.attach(part)   
    33.    
    34.     import smtplib   
    35.     smtp = smtplib.SMTP(server['name'])   
    36.     smtp.login(server['user'], server['passwd'])   
    37.     smtp.sendmail(fro, to, msg.as_string())   
    38.     smtp.close()