python字符编码

字符编码

文本编辑器存储信息的过程

1.打开编辑器就和打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放在内存中的,断电后数据丢失

2.想要永久存储,需要点击保存按钮:编辑器把内存的数据刷到硬盘上

3.在编写一个py文件,跟编写其他文件没有任何区别,都是再写一堆字符而已

unicode

早期,各个国家都有各个国家的编码,所以出现了unicode(一种对应关系)(在内存中)

unicode可以认识所以的编码

例如:

​ 硬盘中无论有什么格式的编码文件,Unicode都可以识别,假设我们需要看日本的文件,从硬盘中读取fuck编码,然后unicode识别,unicode把其转换成gb2312,解决了乱码的问题,随后用unicode存。

utf8

​ 因为unicode存的时候占用了很多空间,所以出现了utf8(只和unicode一一对应),从而解决了unicode 内存占用的问题

​ 内存中是不用utf8的,因为utf8和gb2312等其他编码没有转换关系,所以内存都要用unicode.

gb2312和gbk的区别

gb2312-->常用字

gbk-->所有字

windows系统的记事默认编码是gbk,除此之外都是utf8

乱码

存文件时不乱码而读文件时乱码

​ 写用utf8,存用utf8,读用gbk

存文件时就已经乱码

​ 写用utf8,存用gbk

想要不乱码,用什么编码写,就用什么编码读

编码和解码

编码:unicode-->utf8 从内存到硬盘

解码:utf8-->unicode 从硬盘到内存

现在内存只有unicode编码

python解释器 解释python代码的流程

1.python解释器相当于文本编辑器,把代码读入python解释器中,随后字符编码(python2默认的是ascill,python3默认的是utf8)最后上coding头

中文# gbk编码的中文

2.识别代码——》print有意义--》语法问题

# coding:gbk#告诉python解释器用gbk去完成第一步,读入字符

3.产生结果--》跑到终端——》字符编码

终端特性:电脑是什么编码,就按照什么编码来,window终端是gbk

python2和python3编码的区别

python

python2有两种存储变量的形式,第一种:unicode;第二种:按照coding头来的

假设python2用utf8存储x='中文',当你print(x)的时候,终端接收gbk的变量x,但是windows终端编码是utf8,会乱码

假设python2用unicode存储,终端接受的是unicode,windows终端编码是utf8还是gbk重要吗?不会乱码

# coding:gbk
lt1 = '中文'  # utf存储的
# lt1 = ['中文']  # []让他不用终端的编码转化,显示01010101001
print lt1  # ['\xe4\xb8\xad\xe6\x96\x87']

lt2 = u'中文'  # u'中文'让他变成unicode  # 早期用python2定义中文,必须得加上u,让他变成unicode存储
# lt2 = [u'中文']
print lt2  # '中文

python3

python3只有一种存储变量的形式,unicode

python3用unicode存储,终端接受的是unicode,windows终端编码是utf8还是gbk不重要,不会乱码

lt1 = '中文'  # == u'中文'
print(lt1)

posted @ 2020-03-26 22:19  风啊风啊  阅读(191)  评论(0编辑  收藏  举报