python学习笔记09-python编码与解码

时间:2023-03-09 17:40:10
python学习笔记09-python编码与解码

二进制编码:

---》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编码。

python学习笔记09-python编码与解码

在python3中:默认是utf-8

在编码的同时会把 数据类型变成bytes类型

在解码的同时会把 bytes类型变成字符串

系统默认编码 指:
在python3编译器读取.py文件时,若没有头文件编码声明,则默认使用“utf-8”来对.py文件进行解码。并且在调用 encode()这个函数时,不传参的话默认是“ utf-8 ”。

本地默认编码 指:
在你编写的python3程序时,若使用了 open( )函数 ,而不给它传入 “ encoding ” 这个参数,那么会自动使用本地默认编码。没错,如果在Windows系统中,就是默认用gbk格式!!!

本地默认编码只跟操作系统相关,linux中是utf-8,windows中是gbk
系统默认编码实际是有python3和python2的差异的,python3是utf-8,python2是ascii

在windows中不采用IDE进行文件存储,而是直接将一个txt文件变成py文件,并print中文时,就会出现乱码的问题。采用改写python解码方式 或者利用ide

软件改变py存储时的编码方式就可以解决乱码问题。