发布新日志

  • python零散知识记录(五)base64

    2018-03-28 09:42:16

    最近在用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

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



Open Toolbar