这里会显示出您选择的修订版和当前版本之间的差别。
— |
modules:quopri [2011/05/03 08:04] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== python模块之quopri: quoted-printable编解码 ====== | ||
+ | |||
+ | quopri模块和base64模块有点象,都是用来编码和解码的,且base64和quoted-printable这两种编码都是在电子邮件中常见的编码。 | ||
+ | |||
+ | quoted-printable的编码方法为: 英文字符除了=以外不做处理,其他字符的编码为=加这个字符的两个字节的16进制数。行尾可用"=\r\n"。 | ||
+ | |||
+ | quopri模块只需要使用它的encode,decode,encodestring,decodestring就可以了,前面两个是对文件进行编解码的(也可以对StringIO中的数据编码解码),后面两个是对字符串进行编码解码的。 | ||
+ | |||
+ | 看看下面的quopri应用的例子: | ||
+ | |||
+ | <code python> | ||
+ | #-*- encoding: gb2312 -*- | ||
+ | import quopri | ||
+ | |||
+ | a = "only a test数据" | ||
+ | b = quopri.encodestring(a) # 对字符串编码 | ||
+ | print b | ||
+ | print quopri.decodestring(b) # 对字符串解码 | ||
+ | |||
+ | import StringIO | ||
+ | |||
+ | c = StringIO.StringIO() | ||
+ | d = StringIO.StringIO() | ||
+ | e = StringIO.StringIO() | ||
+ | |||
+ | c.write(a) | ||
+ | c.seek(0) | ||
+ | |||
+ | quopri.encode(c, d, 0) # 编码StringIO中的数据, 第三个参数0表示不对空格和tab符号编码,为1表示进行编码 | ||
+ | print d.getvalue() | ||
+ | d.seek(0) | ||
+ | quopri.decode(d, e) # 解码StringIO中的数据 | ||
+ | print e.getvalue() | ||
+ | |||
+ | f1 = open("aaa.txt", "w") | ||
+ | f1.write(a) | ||
+ | f1.close() | ||
+ | |||
+ | f1 = open("aaa.txt", "r") | ||
+ | f2 = open("bbb.txt", "w") | ||
+ | |||
+ | quopri.encode(f1, f2, 0) # 编码aaa.txt中的数据到bbb.txt | ||
+ | |||
+ | f1.close() | ||
+ | f2.close() | ||
+ | |||
+ | print open("bbb.txt", "r").read() | ||
+ | </code> | ||
+ | ===== 参考 ===== | ||
+ | * http://blog.csdn.net/zhaoweikid/archive/2007/05/31/1633526.aspx | ||
+ | |||