decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('utf-8'),表示将unicode编码的字符串str2转换成gb2312编码。
对于普通的str类型
str字符串,它本身存储的就是字节码。如果这段代码是在解释器上输入的,那么这个s的格式就是解释器的编码格式,对于windows的cmd而言,就是gbk;如果将段代码是保存后才执行的,比如存储为utf-8,那么在解释器载入这段程序的时候,就会将s初始化为utf-8编码。
str.encode("utf-8") 等价于 s.decode(defaultencoding).encode("utf-8")
defaultencoding设置方法:sys.setdefaultencoding('utf-8')
u = unicode("人生苦短") 等价于 u = unicode("人生苦短",defaultencoding)
** str和unicode的区别 **
str是字节串,由unicode经过编码(encode)后的字节组成的
unicode才是真正意义上的字符串,由字符组成
** print函数会自动的做编码转换(按照文件设置的读取编码) **
coding=<utf-8>
-- coding: utf-8 --
是用来告诉解释器按照什么编码格式读取这个文件。