python零散知识记录(五)base64

上一篇 / 下一篇  2018-03-28 09:42:16 / 个人分类:learning

最近在用python模拟发送邮件,网上随便一搜就有好多例子,直接扒下来就用,方便。但是也遇到了一些问题。
主要集中同样的代码,不同类型邮箱在收件后表现不一样:
1、qq邮箱是ok的
2、网易邮箱在收件人、发件人、附件含有中文的时候会有异常
3、我本地的outlook,同样存在网易邮箱的问题,附件还总是显示为ATTXXXX.txt(dat)等等。

在寻找解决办法的过程中,有查找一些关于unicode,utf-8,base64编码的一些资料,只看懂了一些皮毛。
unicode是一个字符集,utf-8是它的一种实现方式。还有utf-16,utf-32
decode,是将其他编码的字符串转换成unicode编码
encode,是将unicode编码转换成其他编码的字符串(虽然看着简单,但我每次都记不住)
注:python3里‘str’是不能直接用decode的

base64,一般在邮件中使用,python有这个模块,使用的时候直接导入。python2和python3中使用方法略有不同,网上搜的有不少是python2的用法

python2:
import base64
s=“我是字符串”
a=base64.b64encode(s)#编码
b=base64.b64decode(a)#解码,打印出来的结果就是s
这样应该能直接出结果

python3:
import base64

s=“我是字符串”
a=base64.b64encode(s.encode('utf-8'))#编码,但bytes-like is required,not‘str’
b=base64.b64decode(a)#解码,打印出来是二进制数,好像是ascii码
c=b.decode() #c打印出来结果才是s

关于编码解码的还得好好看看,容易混




TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar