如果你在某些情况,如cmd上运行程序,那么很有可能会遇到乱码问题,那么解决方法就是编码解码方面的问题了,寻找到对应的编码库,然后在编码库下进行编码解码,会让你的程序从此摆脱乱码问题
windows系统cmd默认是JBK,可以通过chcp 936,将cmd的编码库改成utf8,这样运行.py文件,打印就不会出现乱码问题了
python3.x默认unicode编码,unicode向下兼容gb2312,gbk等
计算机编码的发展
二进制---->ASCII---->unicode(各国有各国的编码库,但是全球统一unicode,万国码)
utf-8是unicode的一个扩展,一个英文用Ascii存,占1个字节,一个中文占3个字节
然后就是各国的编码库,比如中国的gbk,日本的jpk,韩国的ksb,如果中国用日本的软件,需要先将日本软件的字符进行编码解码操作,转换成unicode,再转换成gbk。
python3中字符默认编码是unicode,文件默认编码是utf-8,要转换成gbk,直接encode(‘gbk’)操作,注意在编码的同时,将数据转换成了bytes类型。即字节类型,[0~255],不同计算机间数据传输必须用bytes类型。
python3中只有str与bytes两种类型
str:unicode
bytes:十六进制
str----->bytes:编码,两种方法一样
(1)b=bytes(s,'utf8')
(2)b=s.encode('utf8')
bytes------>str:解码,两种方法一样
(1)s=str(b,'utf8')
(2)s=b.decode('utf8')
注意,编码解码来回必须在同一规则下进行,否则会乱码,因为不同编码库针对bytes类型有不同的翻译方法,
如’utf8’规则中中文三个字节代表一个汉字、而’gbk’规则两个字节代表一个汉字,
如果你好这两个字,编码用utf8,解码用gbk,那么会出现三个不认识的字(乱码)