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]
- #!/usr/bin/env python
- # -*- coding: UTF-8 -*-
- from email.mime.multipart import MIMEMultipart
- from email.mime.base import MIMEBase
- from email.mime.text import MIMEText
- # python 2.3.*: email.Utils email.Encoders
- from email.utils import COMMASPACE,formatdate
- from email import encoders
- import os
- #server[‘name‘], server[‘user‘], server[‘passwd‘]
- def send_mail(server, fro, to, subject, text, files=[]):
- assert type(server) == dict
- assert type(to) == list
- assert type(files) == list
- msg = MIMEMultipart()
- msg[‘From‘] = fro
- msg[‘Subject‘] = subject
- msg[‘To‘] = COMMASPACE.join(to) #COMMASPACE==‘, ‘
- msg[‘Date‘] = formatdate(localtime=True)
- msg.attach(MIMEText(text))
- for file in files:
- part = MIMEBase(‘application‘, ‘octet-stream‘) #‘octet-stream‘: binary data
- part.set_payload(open(file, ‘rb‘.read()))
- encoders.encode_base64(part)
- part.add_header(‘Content-Disposition‘, ‘attachment; filename="%s"‘ % os.path.basename(file))
- msg.attach(part)
- import smtplib
- smtp = smtplib.SMTP(server[‘name‘])
- smtp.login(server[‘user‘], server[‘passwd‘])
- smtp.sendmail(fro, to, msg.as_string())
- smtp.close()
时间: 2024-10-21 08:05:09