Python3中有两种数据类型(注意是数据类型而不是编码方式):str和bytes。str类型存储unicode数据,用于向人展示数据,既我们所说的明文。bytes类型用于存储字节数据,用于计算机存储和传输。
明文(str)和字节(bytes)数据之间的转换关系就是编码和解码,从str到bytes叫编码,用encode命令,从bytes到str叫解码,用decode命令。需要注意的是,str数据无法进一步decode,bytes数据也无法进一步encode。
对于一组字节数据,我们可以先将其解码为unicode数据,再使用其他的编码格式转换为相应的字节数据。
这里需要提醒一点,有人在得到一份乱码数据(str)后试图先对其编码(比如utf-8),再以另外一种方式解码(比如GB2312),这样肯定是行不通的,原因刚才我们已经讲过——编码解码要一致,解决中文乱码的正确环节应该在它出现之前。