1、encode(编码)、decode(解码)概念及转换图

python encode无法转换 python中encode_python

 

encode:将Unicode编码转换成其他字符编码的过程,就叫encode(编码)
decode:将其他字符编码转换成Unicode编码的过程,就叫decode(解码)

非Unicode编码之间因为不兼容的问题,所以不能直接进行转换。

 

2、用法

message = "测试内容"

 

# 指定将Unicode转换成其他编码
en_message = message.encode("utf-8")

 

# 将其他指定编码转换成Unicode
de_en_message = en_message.decode("utf-8")

 

注:上述例子中en_message的编码为utf-8,如若在decode的时候指定为其他编码,如gbk,则因为utf-8与gbk不兼容,会直接报错提示无法解码。

 

3、python默认编码
python2的默认编码为ascii,在做encode或者decode时,如若不指定编码,则使用python2的默认编码ascii。

python3源文件的默认编码为utf-8,但python运行(存储)时默认会将字符串内容转换成Unicode,所以在做encode或者decode时,如若不指定编码,则使用的编码为Unicode。

总的来讲就是,运行python时,python2会将文件内容转换成ascii编码存放到内存中,不兼容则在内存中就是乱码的形式;python3会将文件内容转换成Unicode编码存放到内容中。

 

4、bytes(字节类型)与str(字符串类型)
python2中bytes字节类型和str字符串类型,区别不大,都能表示字符串。

python3中文本内容总是Unicode的,由str字符串类型表示;而二进制数据则由bytes类型表示

 

转换过程如下:

python encode无法转换 python中encode_python_02