二进制编码:
---》ASCII:只能存英文和拉丁字符 一个字符占一个字节:8位
------》gb2312:只能存6700多个中文: 1980年发表
-----------》gbk1.0:存了20000多 1995 年发表
----------------------》gb18030:2000 27000多
万国码:
-------》unicode:utf-32 一个字符占4个字节
-------》unicode:utf-16 一个字符占2个字节,能存65535个 绝大情况下可以存储
-------》unicode:uft-8 可变长的 英文用ascii,占一个字节 一个中文占3个字节
由于各国编码语言不一样,为了使用方便,采用unicode作为中间码
在python2中: 默认编码为ASCII码 要写中文 就必须先声明一下。
在文件开头加上 # -*- coding:utf-8 -*-
编码与解码的方式要一致 才不会出现乱码的现象。
假如你的控制台是以GBK方式解码的,那么你的python源代码就需要以GBK的方式来编码 才不会出现乱码的现象。
在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串解码成unicode编码,如str1.decode(‘gb2312‘),表示将gb2312编码的字符串str1解码成unicode编码。
encode的作用是将unicode编码编码成其他编码的字符串,如str2.encode(‘gb2312‘),表示将unicode编码的字符串str2编码成gb2312编码。
在python3中:默认是utf-8
原文:https://www.cnblogs.com/zhwforever/p/10574109.html